在 Imagemagick 中转换图像时出错
Error in converting images in Imagemagick
我使用Imagemagick convert将pdf文件转成png格式如下:
Magick convert -density 300 PointOnLine.pdf -quality 90 PointOnLine.png
它给了我以下警告:
convert: profile 'icc': 'RGB ': RGB color space not permitted on grayscale PNG `PointOnLine.png' @ warning/png.c/MagickPNGWarningHandler/1744.
创建的png图像全黑。但是,转换为 jpg 图像就可以了。
更新:添加-define profile:skip=ICC后,图像仍然很暗。但是如果转成jpg再转成png就可以了,就是背景暗了。同样的警告仍然存在。问题是什么?谢谢
我了解到您在 Windows 下使用 ImageMagick,即使没有说明(也没有发布 IM、Win 的相应版本)
我在 Ubuntu 16.04 LTS 下,我会提供一个 可能 有用的答案。 (在 Win 下,在所有内容前加上 Magick
)。
对我来说,
convert -density 300 -quality 90 PointOnLine.pdf PointOnLine.png
工作正常,没有警告,产生合适的输出。
我尝试了其他也有效的方法,其中一些可能适合您。
首先将您的 pdf 转换为 RGB,然后再转换为 png。
convert -density 300 -colorspace RGB PointOnLine.pdf PointOnLine_rgb.pdf
convert -density 300 PointOnLine_rgb.pdf PointOnLine_rgb.png
如果你 post 你的 PDF,我可以查看。否则,可能是 CMYK,PNG 不支持。所以试试
magick -quiet -density 300 -colorspace srgb PointOnLine.pdf -quality 90 PointOnLine.png
注意在 IM 7 中,使用 magick 而不是 magick convert。也不是 PNG 和 JPG 的质量不同。参见 https://www.imagemagick.org/script/command-line-options.php#quality
以下在 ImageMagick 7.0.7.22 Q16 Mac OSX Sierra with Ghostscript 9.21 和 libpng @1.6.34_0 中对我没有错误。您的 PDF 有一个 alpha 通道,因此您可能想要展平它。
magick -density 300 PointOnLine.pdf -flatten -quality 90 result.png
这也可以正常工作,但会在 png 中保留 alpha 通道,尽管在提取图像之前您不会在此处看到它:
magick -density 300 PointOnLine.pdf -quality 90 result2.png
请注意,在 IM 7 中,您应该只使用 magick 而不是 magick convert。
如果您没有得到相同的结果,请检查您使用的是否是当前版本的 Ghostscript 和 libpng。
您 PS:alpha 的 delegates.xml 文件应该显示 sDEVICE=pngalpha 而不是 pnmraw,如下所示。
<delegate decode="ps:alpha" stealth="True" command=""gs" -sstdout=%%stderr -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=pngalpha" -dTextAlphaBits=%u -dGraphicsAlphaBits=%u "-r%s" %s "-sOutputFile=%s" "-f%s" "-f%s""/>
用户要求删除我发布的结果图像!
对我有用的命令是:
magick -density 300 PointOnLine.pdf -depth 8 -strip -background white -alpha off PointOnLine.tiff
它没有给出任何警告,也删除了黑色背景。
之后我可以使用 tesseract 将其转换为文本:
tesseract PointOnLine.tiff PointOnLine
我遇到了同样的问题并解决了在输出文件名前添加 -colorspace RGB。
convert -density 300 PointOnLine.pdf -quality 90 -colorspace RGB PointOnLine.png
我使用Imagemagick convert将pdf文件转成png格式如下:
Magick convert -density 300 PointOnLine.pdf -quality 90 PointOnLine.png
它给了我以下警告:
convert: profile 'icc': 'RGB ': RGB color space not permitted on grayscale PNG `PointOnLine.png' @ warning/png.c/MagickPNGWarningHandler/1744.
创建的png图像全黑。但是,转换为 jpg 图像就可以了。
更新:添加-define profile:skip=ICC后,图像仍然很暗。但是如果转成jpg再转成png就可以了,就是背景暗了。同样的警告仍然存在。问题是什么?谢谢
我了解到您在 Windows 下使用 ImageMagick,即使没有说明(也没有发布 IM、Win 的相应版本)
我在 Ubuntu 16.04 LTS 下,我会提供一个 可能 有用的答案。 (在 Win 下,在所有内容前加上 Magick
)。
对我来说,
convert -density 300 -quality 90 PointOnLine.pdf PointOnLine.png
工作正常,没有警告,产生合适的输出。 我尝试了其他也有效的方法,其中一些可能适合您。
首先将您的 pdf 转换为 RGB,然后再转换为 png。
convert -density 300 -colorspace RGB PointOnLine.pdf PointOnLine_rgb.pdf convert -density 300 PointOnLine_rgb.pdf PointOnLine_rgb.png
如果你 post 你的 PDF,我可以查看。否则,可能是 CMYK,PNG 不支持。所以试试
magick -quiet -density 300 -colorspace srgb PointOnLine.pdf -quality 90 PointOnLine.png
注意在 IM 7 中,使用 magick 而不是 magick convert。也不是 PNG 和 JPG 的质量不同。参见 https://www.imagemagick.org/script/command-line-options.php#quality
以下在 ImageMagick 7.0.7.22 Q16 Mac OSX Sierra with Ghostscript 9.21 和 libpng @1.6.34_0 中对我没有错误。您的 PDF 有一个 alpha 通道,因此您可能想要展平它。
magick -density 300 PointOnLine.pdf -flatten -quality 90 result.png
这也可以正常工作,但会在 png 中保留 alpha 通道,尽管在提取图像之前您不会在此处看到它:
magick -density 300 PointOnLine.pdf -quality 90 result2.png
请注意,在 IM 7 中,您应该只使用 magick 而不是 magick convert。
如果您没有得到相同的结果,请检查您使用的是否是当前版本的 Ghostscript 和 libpng。
您 PS:alpha 的 delegates.xml 文件应该显示 sDEVICE=pngalpha 而不是 pnmraw,如下所示。
<delegate decode="ps:alpha" stealth="True" command=""gs" -sstdout=%%stderr -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=pngalpha" -dTextAlphaBits=%u -dGraphicsAlphaBits=%u "-r%s" %s "-sOutputFile=%s" "-f%s" "-f%s""/>
用户要求删除我发布的结果图像!
对我有用的命令是:
magick -density 300 PointOnLine.pdf -depth 8 -strip -background white -alpha off PointOnLine.tiff
它没有给出任何警告,也删除了黑色背景。
之后我可以使用 tesseract 将其转换为文本:
tesseract PointOnLine.tiff PointOnLine
我遇到了同样的问题并解决了在输出文件名前添加 -colorspace RGB。
convert -density 300 PointOnLine.pdf -quality 90 -colorspace RGB PointOnLine.png