将PDF转换为图像时,ImageMagick会更改颜色

Ili*_*a G 10 imagemagick image-processing

我正在使用以下命令将最终用户上传的各种PDF转换为图像

-density 140 -limit memory 64MB -limit map 128MB [pdffile] page.png
Run Code Online (Sandbox Code Playgroud)

这是结果.在右侧,我们有原始PDF和左侧输出图像.正如您所看到的,颜色明显不同.

可能导致这种情况以及如何解决这个问题?

图片

dra*_*han 7

尝试以下命令:

-density 140 -limit memory 64MB -limit map 128MB -colorspace RGB [pdffile] page.png
Run Code Online (Sandbox Code Playgroud)

  • 如果这对您不起作用,请尝试使用 `sRGB` 代替 `RGB`。 (3认同)

joe*_*dle 6

编辑:我后来发现 ImageMagick 可以做得很好,我只需要使用-colorspace sRGB

我的最终命令是:

convert -density 560 -limit memory 64MB -limit map 128MB \
        -colorspace sRGB [pdffile] -scale 25% page.png
Run Code Online (Sandbox Code Playgroud)

过采样和缩小是为了对抗下面提到的较差的抗锯齿效果。

在我发现这一点之前,这是我之前的解决方案......


就我而言,ImageMagick 产生的颜色convert过饱和,就像问题中的颜色一样。我试图使用 IM 6.7.7.10-6ubuntu3转换此文件。

  • -resample 100没有什么区别。

  • -colorspace RGB似乎产生了更准确的饱和度,但整个图像比应有的更暗。

奇怪的是,这个使用 GhostScript 而不是 ImageMagick 进行转换的建议,产生了非常接近正确的颜色:

gs -q -sDEVICE=png16m -dSubsetFonts=true -dEmbedAllFonts=true \
      -sOutputFile=page.png -r200 -dBATCH -dNOPAUSE [pdffile]
Run Code Online (Sandbox Code Playgroud)

(最初的建议通过了该-dUseCIEColor选项,但在我的情况下,这似乎减少了伽玛:亮像素很好,但暗像素太暗,所以我将其删除。)

之后,唯一让我困扰的是抗锯齿/边缘在某些地方有点偏离(尤其是在超过 45 度的曲线上明显)。为了改进这一点,我以所需分辨率的四倍创建了输出,然后按比例缩小,使这些错误几乎难以察觉。请注意,我必须使用 ImageMagick 来-scale实现此目的,而不是使用 -geometry-resize,以避免双三次振铃效应