ImageMagick合并PNG与PDF时颜色反转问题求助
问题解决:单条ImageMagick命令拼接PNG与PDF无颜色反转
问题场景
现有一张PNG图片和一个两页PDF,需将这3份内容上下拼接生成新PNG文件:
- 单独转换并拼接PDF两页的命令可正常生成目标文件
- 直接在命令中加入PNG后,PDF对应部分出现颜色反转
- 分两步执行命令可正常完成操作,但需要实现单条命令无中间文件的效果,便于在mini_magick中使用
原命令示例
单独处理PDF的正常命令
magick convert \ \( -density 300 -colorspace CMYK -resize 1024 -quality 90 input.pdf \) \ -resize 3299x -append \ output.png
添加PNG后出现颜色反转的命令
magick convert \ input.png \ \( -density 300 -colorspace CMYK -resize 1024 -quality 90 input.pdf \) \ -resize 3299x -append \ output.png
分两步的正常命令
magick convert -density 300 -colorspace CMYK -resize 1024 -quality 90 input.pdf output_%d.png magick convert input.png output_0.png output_1.png -resize 3299x -append result.png
问题原因
颜色空间不匹配:PNG图片默认是RGB颜色空间,而命令中对PDF使用了-colorspace CMYK处理,直接拼接时两种颜色空间冲突,导致PDF部分颜色反转。分两步操作时,ImageMagick会自动将PDF转换后的CMYK图片转为RGB格式输出为PNG,因此拼接时颜色空间一致,无异常。
单条命令解决方案
在PDF处理的括号内添加-colorspace RGB,将PDF转换后的内容统一为RGB颜色空间,与PNG匹配:
magick convert \ input.png \ \( -density 300 -colorspace CMYK -resize 1024 -quality 90 input.pdf -colorspace RGB \) \ -resize 3299x -append \ output.png
或者也可以先统一将PNG转为CMYK(但不推荐,因为PNG通常更适配RGB),命令如下:
magick convert \ \( input.png -colorspace CMYK \) \ \( -density 300 -colorspace CMYK -resize 1024 -quality 90 input.pdf \) \ -resize 3299x -append \ -colorspace RGB \ output.png
推荐第一种方案,保持最终输出为RGB,更符合PNG的特性。
内容的提问来源于stack exchange,提问作者Julián Berbel Alt
相关产品推荐
相关产品推荐

