convert -average darky1.jpg darky2.jpg lighty1.jpg lighty2.jpg l.ppm
convert -average lighty1.jpg lighty2.jpg lighty1.jpg lighty2.jpg d.ppm
Run Code Online (Sandbox Code Playgroud)
l.ppm 比 d.ppm 轻得多。图像的顺序很重要(但不应该)。
使用evaluate-sequence mean.
如何正确操作?
编辑:对于将来偶然发现这一点的任何人:Imagemagick 使用 MP 库。如果有可用的核心,那么使用它们会更快,但如果您有并行作业,那就没有帮助了。
执行以下操作之一:
通过让 Imagemagick 仅使用一个线程,它在我的测试用例中减慢了 20-30%,但这意味着我可以在每个核心上运行一项作业而不会出现问题,从而显着提高性能的净值。
在使用 ImageMagick 转换一些图像时,我注意到有些奇怪的效果。使用 xargs 比标准 for 循环慢得多。由于 xargs 仅限于单个进程,因此其行为应类似于 for 循环,因此我对此进行了测试,发现它大致相同。
于是,我们就有了这个演示。
结果:
/media/ramdisk/img$ time for f in *.bmp; do echo $f ${f%bmp}png; done | xargs -n 2 -P 1 convert -auto-level
real 0m3.784s
user 0m2.240s
sys 0m0.230s
/media/ramdisk/img$ time for f in *.bmp; do echo $f ${f%bmp}png; done | xargs -n 2 …Run Code Online (Sandbox Code Playgroud) 如何使用给定的字体渲染一些文本?期待类似的东西:
echo "The slow cyan snail creeps under the eager cat" | render_text --font ./qqq.ttf --scale=18 -o text.png
Run Code Online (Sandbox Code Playgroud)
我希望这在 ImageMagick/GraphicsMagick 套件中的某个地方。
示例用例:使用多种字体渲染相同的文本(并且不想将所有字体安装到系统中)。
我正在使用convert(Imagemagick 组件,在后台委托给 Ghostscript)将 PDF 文件的第一页转换为图像。
通常,convert -density 200 file.pdf[0] first_page.png它将完成这项工作,它会以每英寸纸张 200 像素的速度对 PDF 文件进行采样。
但是,很少发生某些 PDF 异常巨大的情况(有时是 A0 纸,最近是页面超过 23 平方米(长 183 英寸,宽 185 英寸)的 PDF。
对于这样的文件,convert会挂掉,吃CPU时间。宽度和高度超过 35000 像素的图像根本无法使用。
因此问题是:Imagemagick 中是否有一个开关可以使密度适应页面大小,或者至少指定我们不想采样超过 PDF 文件最大区域的一部分(左上角,30x30 英寸)例如)?
谢谢。
编辑:在其官方 git 存储库中,MuPDF添加了-w和-h开关,与-r将在这里执行所需的操作。
选择正确的格式来保存图像对于保持图像质量和减少伪影至关重要。不同的格式遵循不同的压缩方法,并具有各自的优点和缺点。
例如,JPG 适用于色彩渐变丰富的现实生活照片。另一方面,无损 PNG 在原理图方面要优越得多:

在处理大量文件时,选择正确的格式可能是一件苦差事。这就是为什么我很想找到一种方法来自动化它。
关于我的特定用例的一些背景知识:
我正在为我大学的一系列讲座制作一些讲义。讲义中有丰富的图表,我必须从 PDF 格式的幻灯片中提取。提取这些图像给了我无损的 PNG,有时会不必要地大。
将这些特定文件转换为 JPEG 可以将它们的大小减少到原始文件大小的 20% 以下,同时保持相同的质量。这很重要,因为在文字处理器中处理数百张大图像非常容易崩溃。
将所有提取的 PNG 批量转换为 JPEG不是我愿意遵循的选项,因为大多数图像更适合格式化为 PNG。转换这些将导致大小不显着的减少,有时甚至会增加文件大小 - 至少我的测试运行显示了这一点。
我们可以从中得出的是,压缩后的文件大小可以作为指示哪种格式最适合特定图像的指标。它不是一个特别准确的预测器,但效果很好。那么为什么不以脚本的形式使用它:

我包含inotifywait是因为我希望在将提取的图像拖到文件夹中时自动执行脚本。
这是我过去几周一直在使用的脚本的更简单版本:
#!/bin/bash
inotifywait -m --format "%w%f" --exclude '.jpg' -r -e create -e moved_to --fromfile '/home/MHC/.scripts/Workflow/Conversion/include_inotifywait' | while read file; do mogrify -format jpg -quality 92 "$file"
done
Run Code Online (Sandbox Code Playgroud)
脚本的高级版本必须
实际转换可以使用 imagemagick 工具完成:
convert -quality 92 -flatten -background white file.png file.jpg
Run Code Online (Sandbox Code Playgroud)
不幸的是,我的 …
我想我之前不小心在我的 CentOS 5.8 上安装了 2 个 ImageMagicks。
版本 6.2.8 已被删除
yum erase ImageMagick
Run Code Online (Sandbox Code Playgroud)
但是,当我输入时它仍然显示这一点 $convert -version
Version: ImageMagick 6.8.2-9 2013-02-11 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2013 ImageMagick Studio LLC
Features: DPC OpenMP
Delegates: jng jpeg png ps xml zlib
Run Code Online (Sandbox Code Playgroud)
which convert 显示这个
/usr/local/bin/convert
Run Code Online (Sandbox Code Playgroud)
这个。我可能是从源代码安装的。
我怎样才能删除它?
我用 GIMP 创建了一条颜色曲线。它看起来像这样:
~/.gimp2.8/curves/selphy
Run Code Online (Sandbox Code Playgroud)
(只是第一行)
# GIMP curves tool settings
(time 0)
(channel value)
(curve
(curve-type smooth)
(n-points 17)
(points 34 0.000000 0.000000 -1.000000 -1.000000 -1.000000 -1.000000 -1.000000 -1.000000 -1.000000 -1.000000 -1.000000 -1.000000 0.375000 0.490637 -1.000000 -1.000000 -1.000000 -1.000000 -1.000000 -1.000000 -1.000000 -1.000000 -1.000000 -1.000000 -1.000000 -1.000000 -1.000000 -1.000000 -1.000000 -1.000000 -1.000000 -1.000000 1.000000 1.000000)
(n-samples 256)
(samples 256 .....
Run Code Online (Sandbox Code Playgroud)
我想用转换(ImageMagick)批量处理一些图像。
有没有办法使用这条曲线convert?
假设我有一张文本文档的照片或扫描件,可能带有一些低对比度水印背景。如果是照片,除了水印之外,还会有来自照明的亮度梯度,并且可能来自由于折叠而未平放的纸张。
我想用 imagemagick 对这些照片进行后期处理,使其看起来像传真,即将图像转换为单色黑/白以校正局部亮度变化。正常-threshold选项将不起作用,因为
智能手机上的 Cam-Scanner 应用程序通常提供黑/白文档选项,用于校正此类颜色渐变并计算阈值的合理第一次猜测,这足以进行批处理。
但是,当我已经在 PC 上拥有原始图像时,它们并没有帮助,尽管理论上我可以将它们上传到智能手机并导入它们——这非常不切实际,尤其是对于大量图像。
imagemagick 或其他一些具有批处理功能的软件(最好是开源的)是否支持这种转换?
imagemagick 的importshell 命令拍摄桌面快照。执行中
import /tmp/foo.png
Run Code Online (Sandbox Code Playgroud)
会将我的光标转换为十字准线,并允许我选择要捕获的屏幕区域。但是,如果我尝试将该命令绑定到 i3wm 热键,它就不起作用。
我的 i3wm 配置文件中的以下键绑定
# ...
bindsym $mod+m exec "import /tmp/foo.png"
# ...
Run Code Online (Sandbox Code Playgroud)
产生以下错误(我可以将其输出到终端):
import-im6.q16:无法抓取鼠标`':没有这样的文件或目录@ error/xwindow.c/XSelectWindow/9187。
这是为什么?我怎样才能让它发挥作用?
我尝试从 Windows 10 命令行将 pdf 文件转换为 ImageMagick 中的 png 图像,如下所示:
Magick convert a.pdf a.png
Run Code Online (Sandbox Code Playgroud)
我得到错误
magick: FailedToExecuteCommand `"gswin32c.exe" -q ...
Run Code Online (Sandbox Code Playgroud)
但它适用于将图像转换为图像。问题是什么?
imagemagick ×10
conversion ×2
linux ×2
pdf ×2
unix ×2
centos ×1
fax ×1
fonts ×1
ghostscript ×1
gimp ×1
gradient ×1
jpeg ×1
performance ×1
png ×1
scanner ×1
terminal ×1
windows-10 ×1