如何让 ImageMagick 库与 Swift 4/iOS 11 一起使用?

Posted

技术标签:

【中文标题】如何让 ImageMagick 库与 Swift 4/iOS 11 一起使用?【英文标题】:How to get the ImageMagick library working with Swift 4/iOS 11? 【发布时间】:2019-01-02 21:03:52 【问题描述】:

我正在尝试让 ImageMagick 在我的 ios 项目中工作。不幸的是,到目前为止我所尝试的一切都没有奏效。

Cocoapods

最明显的方法是使用cocoapod。不幸的是,在安装 cocoapod 之后,似乎没有任何东西可以快速导入。也许我错过了一些明显的东西,如果有人有任何想法会很棒。不幸的是,就具体示例而言,文档缺乏。

静态库 - 方法 #1

official ImageMagick docs 提供了一些指令来编译最新版本的 ImageMagick 并在您的 Xcode 项目中包含一个静态库。不幸的是,说明的第一步需要运行我找不到的 bash 脚本 imagemagick_compile.sh。再一次,我可能会遗漏一些明显的东西。

静态库 - 方法 #2

经过一些额外的搜索,我找到了 ImageMagick 文档中提到的 ~Claudio 人,他是 iOS 版本 ImageMagick 的维护者。他有一个由 ImageMagick 提供的repo with similar instructions,但这个 repo 包含一个 bash 脚本来编译和生成 ImageMagick 的静态库。我尝试直接运行脚本./all.sh 6.8.8-9,但很快意识到我没有按照他的说明设置build 目录,并且我无法正确安装libpng

静态库 - 方法 #3

same repo 包含编译和生成静态库的说明,还包括一个旧的示例 iOS 项目,其中包含一个用于旧版 ImageMagick 的静态库。除了 ImageMagick 库有一个类 Timer 与 Swift4/iOS 提供的 Timer 类冲突之外,这几乎可以工作,所以我无法使用这个 ImageMagick 静态库编译我的项目。

关于 SO 的 ImageMagick iOS 问题

Stack Overflow 上还有一些其他问题涉及在 iOS 上运行 ImageMagick,所以我知道其他人已经这样做了,但最近没有。如果有人有任何想法将不胜感激,谢谢!

关于如何在 iOS 上使用 ImageMagick 的未回答问题:ImageMagick iOS image 可能有用的评论,其中包含我在上面提供的一些相同链接。 有人已经在使用 iOS 版 ImageMagick,但没有详细说明它是如何实现的:ImageMagick circular dstortion on iOS 已经在其应用程序中使用 ImageMagick 的人提出的未回答问题:Ios - ImageMagick - No Image Created after Distortion 与使用 cocoapod 版本的警告相关的最新问题:iOS: ImageMagick compiler warnings in Xcode

其他问题:https://***.com/search?q=imagemagick+ios 不幸的是,我没有找到任何有用的问题。

【问题讨论】:

【参考方案1】:

要将 ImageMagick 集成到 iOS 中,您需要执行以下操作:

    在此处安装可用的库https://www.imagemagick.org/download/iOS/ 您将需要一个 Swift-Objective-C 桥接头,其中包括:

    #import "ImageMagick.h"

    #import "MagickWand.h"

      您需要修改任何将 Timer 引用到 Foundation.Timer 的函数,这将解决与 ImageMagick 库的任何冲突

      您需要在您的目标 > 构建阶段 > 将二进制文件与库链接 > “libxml2.tbd”下添加。

希望对你有帮助

【讨论】:

以上是关于如何让 ImageMagick 库与 Swift 4/iOS 11 一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

使 Swift OSS 库与 Objective-C 兼容

Flutter 插件问题(引入插件同时存在静态库与swift)

如何正确地将库与 cmake 链接?

imagemagick:调整大小后如何获取图像大小?

Swift5 新特性预览

ImageMagick通过CMD提示附加递归子目录