如标题所述,我需要知道如何实现这一点,即ImageMagick,使用Netpbm程序套件:
convert -size 4800x3450 xc:transparent background.pnm overlay_image.pnm -geometry +469+499 -composite pnm:- | img2pdf - | pdftk - multibackground another_image.pdf output def_image.pdf
提供一个班轮代码来提供上下文。我只需要
convert
部分。
说明 Gimp 问题的另一种方法可能是:如何将图像(将图像作为图层导入)放在(透明)画布上并保存整个图像而不将其压平,即保持图像的透明度背景/画布。
请随意详细阐述通道、透明度等的情况(甚至还有更基本的图像处理概念)。
我是这方面的新手,我只是从我想要的角度说话,而不是从我应该知道的角度说话。预先感谢您。
(对于新手来说,Netpbm 套件文档中的示例非常吝啬。在多次失败的尝试之后,了解正在发生的情况的最佳机会可能是提供 ImageMagick 示例并查看它如何转换为 Netpbm 套件。)
这似乎就是我正在寻找的(这是 bash/CLI;我再次给出一句俏皮话,因为这是我将实际使用的):
pbmmake -white ${CANVAS_WIDTH} ${CANVAS_HEIGHT} | pnmcomp -xoff=${x1} -yoff=${y1} ${OVERLAY_PNM_IMAGE} - | pnmtopng -transparent=white | pngquant --speed 1 --posterize 4 --strip - | img2pdf - | pdftk - multibackground "${IMAGE%.pnm}_ocr.pdf" output "def.pdf"
如果我没记错的话,关键是要确保使用
pbmmake
命令制作的画布颜色与pnmtopng
命令中指定的颜色相同。
我认为有一些“几何”(即定义区域和相关内容的坐标)信息要存储/嵌入到
.png
文件中,以告诉软件不要修改指定的区域/像素,但似乎整个业务相当于告诉实用程序从 .pnm
转换为 .png
将其解释为之前在生成“画布”时指定的“透明”颜色。
注意:在我的工作场景(灰度)中,我选择白色,因为选择实际颜色可以绝对避免与灰度图像的干扰(即使用无关的颜色,例如红色,可以确保不会弄乱现有的颜色)颜色,然后可以充当“透明”,作为透明度的参考,可以这么说),当在
.pdf
中查看最终的 okular
文件时,会产生不良效果:可能会出现非常细的(红色)颜色框架清楚地感知到。因此,由于我的图像背景是白色,所以我选择了白色。
pngquant
允许微调输出 .png
文件,基本上,与原始帖子中 convert
命令的输出相比,此设置会减小其大小。