【问题标题】:How to convert a jpeg image to an svg in octave?如何将 jpeg 图像转换为 svg 八度音阶?
【发布时间】:2015-10-07 21:35:28
【问题描述】:

我有一个黑白图像,我首先想将其转换为具有透明背景的 png,以便仅保留图像的黑色部分。使用此输出图像,我想将其转换为 svg。所有这些都通过可以连接到服务器后端的代码实现。我怎样才能做到这一点?

【问题讨论】:

  • 您是指只有纯黑色和纯白色的双层图像,还是带有中间灰度的灰度图像?你能在你的 Octave 环境中执行一个命令行程序吗?
  • 开始的图像将是一个双层图像。就命令行执行而言,任何解决方案都可以,但应该能够在 java / php 后端部署此代码。 android 应用应该能够从服务器下载 svg。
  • 我是图像处理的新手,所以我不知道八度的“方式和内容”。需要 svg 以便我可以在 android 中实现 vectordrawables。
  • jpeg 是光栅图形格式,svg 是矢量图形格式。原则上,它们不能轻易地相互转换。但是,SVG 可以用作可以嵌入光栅图形的容器。为什么需要 SVG?

标签: image-processing svg png octave


【解决方案1】:

我不确定这是否总是有效,但它可能会让你开始。我建议 ImageMagickpotrace 两者都是免费的,可用于 OS X、Linux 和 Windows。您可以将它们集成到 PHP 中并将它们作为库函数运行,但现在,我只是使用终端/命令行。

让我们从使用 ImageMagick 制作棋盘图像开始

convert -size 200x100 pattern:checkerboard chess.jpg

我们现在可以将其设置为纯黑白,如下所示:

convert chess.jpg -threshold 50% chessbw.jpg

然后我们想将它发送到potrace 以制作svg,但这需要一个pbm 格式的文件,所以我们将其转换为pbm 如下:

convert chess.jpg -threshold 50% chessbw.pbm

现在我们告诉potrace 将其转换为svg

potrace -b svg chessbw.pbm -o result.svg

但这不是很容易看到,所以我们让ImageMagickresult.svg 转换为JPEG,但带有红色背景,因此我们可以看到透明区域:

convert -background red result.svg result.jpg

好吧,这更像是一个解释而不是一个简单的答案,所以我将把所有这些简化为一个可以完成全部工作的命令:

convert chess.jpg -threshold 50% pbm:- | potrace -b svg - -o result.svg

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 2010-10-17
    • 2016-10-20
    • 1970-01-01
    • 1970-01-01
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多