【问题标题】:How to convert jpg or png to svg in iOS?如何在 iOS 中将 jpg 或 png 转换为 svg?
【发布时间】:2016-09-27 10:51:20
【问题描述】:

我喜欢将 .jpg 或 .png 文件转换为可以在 UIImageView 中显示的 .svg 格式。有没有办法在 Objective-C 中做到这一点?

【问题讨论】:

  • 您的意思是对图像进行矢量化或将其嵌入到 svg 中?
  • 为什么要将其转换为 SVG?文件变大。质量没有提高。 UIImageView 是为 PNG 和 JPEG 构建的。
  • 是的,我想转换成矢量化图像@n00dl3

标签: ios objective-c svgkit


【解决方案1】:

你 shouldn't 在 Xcode 中使用 SVG 图像:

建议您对应用中的大多数图像使用 PNG 或 JPEG 文件。图像对象针对读取和显示这两种格式进行了优化,这些格式比大多数其他图像格式提供更好的性能。由于 PNG 格式是无损的,因此特别推荐您在应用界面中使用的图像。

另外,有一个SVGKit,根据许多开发人员的说法是buggy,所以使用它需要您自担风险。

SVG 是基于 XML 的矢量,在 Xcode 中您也可以使用矢量,但使用 PDF 格式并遵循 this 教程。

简而言之:

  1. 使用 @1x​​ 资源生成 PDF(在编译期间它将生成 @2 和 @3)
  2. 将比例因子设置为单个向量:

  1. 将您的 PDF 拖放到所有通用部分中
  2. 按名称引用您的图像,就像任何 PNG 文件一样

    [UIImage imageNamed:@”Home”]
    

另外,stackoverflow(也许)related 回答

【讨论】:

  • 这是一个非常糟糕的答案。
  • 真的不好回答
  • 工作得很好!
【解决方案2】:

要将 PNG 转换为 SVG(这是非常明智和有效的做法),您需要一个名为“跟踪器”的应用程序或库。它将跟踪形状、渐变等的轮廓并将它们转换为矢量表示。

对于简单的情况,这对计算机来说是很容易做到的;对于复杂的情况(例如梯度),这是一个非常困难的 AI / 计算机视觉问题,您需要在高端编码解决方案上花费 $$$ 和/或找到解决问题的博士级研究!

Inkscape(开源)内置了一个做得非常好的免费跟踪器 - 谷歌“inkscape trace”获取有关如何使用它的教程,并生成一个您可以使用的 .svg 文件。这是一个手动过程。

要在应用内使用此功能,您需要找到适用于 iOS 的跟踪库。 Inkscape 使用的库都是开源的,因此您可以尝试将它们转换为 iOS - 它们是用 C 编写的,因此非常容易。

【讨论】:

  • 能否添加库链接?谢谢
猜你喜欢
  • 2015-01-31
  • 2012-04-09
  • 1970-01-01
  • 1970-01-01
  • 2021-10-14
  • 1970-01-01
  • 1970-01-01
  • 2012-09-15
  • 1970-01-01
相关资源
最近更新 更多