使用 GraphicsMagick,用透明度替换一种颜色相当容易......
gm convert -transparent magenta src.png dst.png
Run Code Online (Sandbox Code Playgroud)
不幸的是,我想不出一个简单的方法来做完全相反的事情。如果我有一个具有 alpha 通道透明度的图像文件,我如何在恒定颜色的背景上合成它然后丢弃现在多余的 alpha 通道?背景颜色应影响部分透明和完全透明的像素。
我发现了 +matte 选项,但它实际上丢弃了 alpha 层 - 通常在透明度所在的位置留下垃圾颜色像素,而不是例如使用 -background 选项来指定要使用的背景颜色。
到目前为止,我管理此问题的唯一方法是使用多个调用 - 一个生成纯色矩形图像文件,另一个将原始图像与纯色图像合成,第三个调用丢弃 alpha 通道。这看起来很疯狂——当然可以通过一个相当简单的调用来实现吗?
我目前使用 GraphicsMagick,但没有承诺 - 如果它使事情变得更容易,我会切换到 ImageMagick。
编辑
当我说“背景颜色应该影响部分透明和完全透明的像素。”时,我的意思是结果应该是我通常期望的将透明精灵块传输到纯色背景上的结果。应该混合部分透明的像素。
这意味着,如果我随后反转该过程 - 将背景颜色键转换为透明度 - 我希望在原始图像周围看到一个光晕,其中背景颜色混合到像素中,因此颜色键不完全匹配,因此不会转换回透明度。出于这个原因,这不是大多数人想要的。不过,这正是我想要的,因为我不会将背景转换回透明度 - 如果需要,我仍然会拥有原始透明度的原始图像。
任何人都可以推荐一种将大量 PNG-24 文件批量转换为 PNG-8 的好方法,同时尽可能减少质量损失并保持透明度?
我尝试过ImageMagick,但生成的图像质量不如我想要的那么清晰。使用Paint.NET我能够获得更好的结果,但据我所知,我无法使用此工具进行批量处理。
我与ImageMagick一起使用的设置,以防有更好的选择:
convert file.png -depth 4 file-output.png
我也一直在玩OptiPNG,但我还没有发现确保输出图像是 PNG-8 的方法。
convert +append ...
Run Code Online (Sandbox Code Playgroud)
水平附加图像。
convert -append ...
Run Code Online (Sandbox Code Playgroud)
垂直附加图像。
想象一下,我有一组 N 个图像,我想创建以在 N/2 行和 2 列的网格后附加图像。我怎样才能做到这一点?
最好是直接的方法,但如果涉及临时图像,对我来说没问题
我需要创建和拆分多页 TIFF 图像,范围从 2 页到近 100 页(A4、300 dpi、2500×3500 像素)。该作业由 x64 Linux 服务器上的脚本定期执行。目前我正在使用 Imagemagick。较小的情况不会造成任何问题,但较大的情况会造成任何问题。
我需要从根本上减少操作期间使用的内存量。
例如,这个:
convert *.jpg -compress lzw output.tif
Run Code Online (Sandbox Code Playgroud)
(70 个 jpeg 文件)消耗大约 4.6 GB 的 RAM,即使每个输入小于 2MB,生成的文件也小于 250MB。
反向操作:
convert input.tif output-%04d.png
Run Code Online (Sandbox Code Playgroud)
有类似的问题。
从我所读到的,发生这种情况是因为 Imagemagick 首先加载和解码所有输入图像,然后才开始将它们编码到输出文件中。
如何在没有如此巨大内存占用的情况下创建和拆分多页 TIFF 图像?我不一定非要使用 ImageMagick,任何其他免费工具都可以。
在将页面插入视频之前,我使用以下命令将 PDF 文件中的页面提取为独立的 JPG 文件:
convert.exe -density 96 -resize 640x480 input.pdf +adjoin -alpha remove -alpha off output.jpg
Run Code Online (Sandbox Code Playgroud)
因此,文件编号为 output-1.jpg、output-2.jpg 等,这意味着对于超过 10 页的 PDF,前 10 个不会首先列出。
我宁愿将文件名编号为 output-01.jpg、output-02.jpg,以便它们排在其余文件之前。
有人知道在命名输出文件时是否可以告诉 ImageMagick 使用两位数字吗?
谢谢你。
我有两张没有透明度的图像(两张照片),我想将这些图像组合成一个图像,其中第一张图像覆盖第二张图像。如何将这些图像缩放到相同的大小并与下面的示例中的透明度合并?

尝试安装 RMagick 时出现此错误:
$ sudo gem install rmagick
Building native extensions. This could take a while...
ERROR: Error installing rmagick:
ERROR: Failed to build gem native extension.
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb
checking for Ruby version >= 1.8.5... yes
checking for gcc... yes
checking for Magick-config... no
Can't install RMagick 2.13.1. Can't find Magick-config in /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/opt/local/bin:/usr/local/git/bin:~/bin:/usr/local/bin:/usr/local/mysql/bin:/usr/local/pear/bin
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You …Run Code Online (Sandbox Code Playgroud) 我收到了许多带有图像的 pdf 文件。原始图像已经丢失,所以我需要提取它们。我有 Adobe Acrobat Pro,所以我使用Advanced > Document Processing > Export All Images(有四个选项:jpeg、png、tiff、jpeg2000)提取它们。但是,我想以原始格式提取它们,这显然不是 jpeg:我还按照此处所述从 xpdf 中测试了pdfimages.exe,这给出了 .ppm 文件,而不是 jpeg。
所以我尝试了 ImageMagick 的识别,它给了我这个:
identify images-000.ppm
images-000.ppm PPM 870x1181 870x1181+0+0 8-bit sRGB 3.082MB 0.000u 0:00.000
Run Code Online (Sandbox Code Playgroud)
这是否表明它是嵌入式 .bmp?怎么讲?我实际上希望 Acrobat 中有一个函数来识别图像的格式,但我找不到它。
那么,识别pdf中图像的图像格式的最佳方法是什么?
(由于批处理功能,我更喜欢通过 Acrobat 提取)。
使用 ImageMagick 或类似的命令行工具时,了解图像中某些点的坐标会很有用。
单击它们时如何显示图像(带有平移和缩放)并打印像素坐标?
我发现的最近的事情是使用 ImageMagickdisplay并单击鼠标中键。Magnify 3%窗口打开,坐标绘制在叠加层中。但我需要将它们打印到控制台,以便在其他脚本中作为参数重用。
我认为命令选项中有一个简单的开关mogrify,告诉它也可以遍历子文件夹。我没有找到。在Linux上,“ find”命令似乎可以解决问题,那么在Windows上如何做到这一点呢?
magick mogrify -resample 72 -resize 700x700 -format png -path "C:\ImageMagick-7.0.8-Q16\dest" *.*
Run Code Online (Sandbox Code Playgroud)
有效,但我也需要它通过子文件夹递归。最简单的方法是什么?
理想情况下,我正在寻找要保留在目标中但仅包含处理后的图像的源目录结构。
imagemagick ×10
images ×3
bulk ×1
command-line ×1
conversion ×1
graphics ×1
image-viewer ×1
macos ×1
merge ×1
mogrify ×1
montage ×1
pdf ×1
png ×1
recursive ×1
ruby ×1
rubygems ×1
tiff ×1
transparency ×1