我使用 ImageMagick 将一堆图像整理成一个 PDF。虽然这可以正常工作,但当我在浏览器上打开 PDF 并转到属性时,它显示该文件未启用快速 Web 查看,这使得它要等到整个文件加载完毕才能显示任何内容。
ImageMagick 可以做到这一点吗?
我有一个彩色图像,其中有很多现有的透明背景,但也有一些rgb(255,0,255)我想另外变得透明的亮粉色块。
我这样做是这样的:
convert 0001.png -fuzz 15% -fill transparent -transparent "rgb(255,0,255)" result.png
Run Code Online (Sandbox Code Playgroud)
问题是,因为原始图像是抗锯齿的,所以仍然有一个亮粉色光晕,它与例如rgba(255,0,255, 50 )和其他部分透明的值不匹配,除非我把速度调得-fuzz太高。
所以我想我会这样解决这个问题:
convert 0001.png -fuzz 15% -fill transparent
-transparent "rgba(255,0,255,0)"
-transparent "rgba(255,0,255,64)"
-transparent "rgba(255,0,255,128)"
-transparent "rgba(255,0,255,192)"
-transparent "rgba(255,0,255,255)"
result.png
Run Code Online (Sandbox Code Playgroud)
...但是对不同程度的不透明度的额外调用-transparent似乎没有任何额外的效果。
几乎就像在进行匹配之前调用 -transparent 截断我的rgba(255,0,255,128)to (尽管仍然查看不透明度,但似乎总是从 255 开始这样做,而不是从我传入的不透明度开始)。rgb(255,0,255)-fuzz-transparent
如何替换 color 的所有示例RGB(255,0,255),而不考虑像素预先存在的 alpha?
这是我正在使用的图像:
我正在尝试使用 imagemagick 的“转换”创建图像。
我有这个命令:
转换-尺寸720x480 xc:白色-单位像素每英寸-密度81x72 foo.jpg
但是,图像最终的分辨率为 72x72,而不是 81x72。
识别-verbose foo.jpg 图片:foo.jpg 格式:JPEG(联合图像专家组JFIF格式) 类:伪类 几何尺寸:720x480+0+0 分辨率:72x72 打印尺寸:10x6.66667
当我使用convert而-resample 81x72不是运行时-density,我得到了正确的解决方案。为什么是这样?
我正在寻找类似 ImageMagick 的“转换”但输出到控制台的东西。
显而易见的答案是“创建一个临时文件并创建它”,但我不希望遇到麻烦。
是否有任何 linux 实用程序可以执行此操作?
我有一个以 BMP 格式存储的图像,并想使用 imagemagick 将其转换为 PNG。
我在十六进制查看器中查看了像素,注意到它们以 32bpp 存储,因此有一个 alpha 通道。透明像素具有 RGBA 值 (255, 255, 255, 0),paint.NET 将它们拾取为白色像素,可能是因为它不希望 BMP 具有透明像素?
无论如何,我使用的命令是
convert -alpha on -quality 95 in.bmp out.png
Run Code Online (Sandbox Code Playgroud)
但是,当我在 Paint.NET 中打开生成的图像(通常会正确解释透明像素)时,这些透明像素仍然是白色的。
我是否错误地转换了图像?我希望 alpha 值为 0 的像素在我常用的图像编辑器中显示为透明。
我想对 pdf 应用一些改进(更改亮度、对比度等),使其更具可读性,所以我选择了 ImageMagick 和 pdftk。我用下面的命令把pdf分割成几个单页的pdf文件,这样我就可以一次对ImageMagick一个文件进行操作。
pdftk a.pdf burst output %04d.pdf
Run Code Online (Sandbox Code Playgroud)
此时,一切正常。我使用其中一个文件(例如 0038.pdf)进行测试。例如,为了调整对比度,我使用了这个命令:
convert 0038.pdf -quality 100 -density 300 -brightness-contrast 0x10% out.pdf
Run Code Online (Sandbox Code Playgroud)
但这是结果:
原来的

转换

我尝试更改质量、密度、大小、调整大小、几何形状的值,输出 pdf 具有不同的大小/分辨率,但始终无法读取。所以我意识到问题出在转换的上游。似乎从 .pdf 文件中错误地读取了输入的 pdf 大小和分辨率convert。
事实上,当我输入这个命令时:
convert -verbose 0038.pdf out.pdf
Run Code Online (Sandbox Code Playgroud)
我得到:
/tmp/magick-9894W9c_JPl1I7QV1 PNG 380x482 380x482+0+0 8-bit sRGB 128KB 0.010u 0:00.010
0038.pdf PNG 380x482 380x482+0+0 16-bit sRGB 128KB 0.000u 0:00.000
0038.pdf=>out.pdf PNG 380x482 380x482+0+0 16-bit sRGB 125KB 0.050u 0:00.049
[ghostscript library] -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=pngalpha" -dTextAlphaBits=4 …Run Code Online (Sandbox Code Playgroud) 有时我有我想要包含某个 DPI 设置的图像文件。请注意,我的意思只是 DPI 值,即图像元数据中的值。我不想调整实际图像的大小。因此,例如,更高的 DPI 将导致以厘米为单位的更小尺寸,以及相同数量的像素。
我知道我可以使用convert带有-density参数的ImageMagick 设置或更改图像的 DPI ,但这会重新编码图像。我想避免这种情况。
有没有办法,使用 ImageMagick 或其他东西(例如 ExifTool 或其他东西)来显式设置 JPEG 的 DPI 值而不更改实际的压缩图像内容本身?
请注意,我正在使用 OS X 并寻找一个命令行工具来执行此操作(我想在 shell 脚本中使用它)。
我正在寻找一种方法将动画 GIF 分解为组成它的图像,并发现许多线程推荐:
convert -coalesce Dijkstra_Animation.gif djik.png
Run Code Online (Sandbox Code Playgroud)
我运行了这个命令,但它失败了。它只产生一个文件 ( djik.png) 来启动,虽然它的扩展名是.png,但它实际上是输入的 GIF... 出了什么问题?如何将多帧 GIF 分解为单个帧?
我正在尝试通过 imagemagick 调整一堆(450+)图像的大小,它们都从 500x500 开始,我已经编写了一个脚本来将它们调整为大约 5 种不同的大小。
现在我已经转换了它们,我注意到颜色质量受到了明显的影响。有什么我可以改变我的命令来提高质量的吗?
命令: convert input.jpg[0] -background black -density 72 -resize 440x440 -quality 100 -strip output.jpg
我无法上传实际文件,但这是一个裁剪版本(带填充)
原来的:
图像魔法:
我正在尝试resize使用 ImageMagick进行 GPU 加速操作。
在我的 Windows 机器上,convert -list configure只使用列表FEATURES OpenMP而不是OpenCL我预期的,因为我安装了 NVidia CUDA GPU。
还有什么我必须做的吗?
在生产中,我们将使用 Linux。我是否还需要做一些额外的事情才能启用硬件加速?
imagemagick ×10
linux ×3
jpeg ×2
pdf ×2
windows ×2
browser ×1
command-line ×1
conversion ×1
dpi ×1
exiftool ×1
ghostscript ×1
images ×1
metadata ×1
opencl ×1
pdftk ×1
preview ×1
resolution ×1