【发布时间】:2017-12-20 23:48:09
【问题描述】:
我已经被这个问题困扰了一段时间了。本质上,我有一堆 svg 图像。 svg 文件中的每个“孩子”都标有一些像素值。目前这个值的数量非常少,所有东西都标记为 rgb(0.0, 0.0, 0.0), rgb(1.0, 1.0, 1.0) ... rgb(9.0, 9.0, 9.0),所以基本上我有 10 种不同的类型像素。
现在,我想将这些图像转换为 png 格式,更重要的是我需要像素值的映射为 1 对 1。本质上,所有在 svg 文件中具有 rgb(0.0, 0.0, 0.0) 值的像素,都需要在 png 文件中具有 rgb(x,x,x) 值(甚至更好的 L(x)); svg 文件上的 rgb(1.0, 1.0, 1.0) 需要转换为 png 文件上的 rgb(y,y,y) (甚至更好的 L(y))等等。这种一对一映射对我的应用程序来说是个大问题,因为这本质上是我工作的基本事实。
只需在控制台中编写:
convert test.svg test.png
没有给我我想要的。检查值的直方图,似乎我有 248 个唯一值而不是 10 个,这对我不利(尽管它们中的绝大多数只有几个像素)。
有谁知道:
- 如果可以的话。
- 如何做到这一点。
到目前为止,我已经尝试过使用 Python 的 cairosvg 等其他库,但效果似乎更糟。是的,我知道 svg 和 png 是完全不同的格式。
为了澄清,添加一个 svg 和一个 png 文件:
svg:https://drive.google.com/open?id=0B_vhcDz1zxeYeGVDSnhfeWplOWs
png:https://drive.google.com/open?id=0B_vhcDz1zxeYUnYzZUtIUmVqVWM
在 Python 中打开文件,似乎有 248 个唯一像素值,而应该只有 4 个(背景 + 三个符号)。
谢谢!
【问题讨论】:
-
我认为你需要更具体一些,实际展示一个文件,而不是抽象地谈论 "children"、
L和x和 “像素类型” 特别是考虑到svg文件甚至没有像素。 -
没有看到您的测试文件,我只能猜测您看到的是缩放效果,其中 PNG 像素是从 SVG 数据点插入的。
-
公平点,我添加了一个svg文件,以及对应的png文件。 @MarkSetchell
-
@GlennRanders-Pehrson
-
谢谢。我正在看一看。 GraphicsMagick 产生与您的 png 相同的输出。由于某种原因,我的 ImageMagick v6 和 v7 都拒绝了 svg 文件。
标签: python svg imagemagick png