标签: imagemagick

在 EXIF 信息中按日期对图像进行排序和重命名

我的照片文件夹里乱七八糟;我想根据 EXIF 信息中的日期对它们进行排序并根据日期重命名(如 001.jpg、002.jpg 等)。

我怎样才能在 Linux 中做到这一点?我之前已经将 ImageMagick 用于一些基本的批量处理任务(转换和调整大小等),是否可以将它用于此任务?

linux exif rename imagemagick

10
推荐指数
2
解决办法
2万
查看次数

平铺动画 gif

有什么方法可以使用 imagemagic / montage 来平铺循环的动画 gif(与非动画的混合)?

也就是说,我想在空间中而不是在时间上连接动画。我意识到动画中的帧数及其持续时间可能无法巧妙地组合两个动画。但是我对程序进行近似和猜测以及扩展/重复帧很好,只要所有帧都以某种方式存在。

我试过了

convert *.gif -append output.gif
Run Code Online (Sandbox Code Playgroud)

montage *.gif -mode concatenate -tile x1 output.gif
Run Code Online (Sandbox Code Playgroud)

但这些都将动画 gif 视为多个单独的非动画。

我想我可能可以编写一个脚本来按帧将动画分开,根据需要重复/扩展较短的循环以匹配最长的循环,重复非动画 gif 以获得最长动画中的尽可能多的帧,将相应的帧拼接在一起成单个大框架-append,然后将这些大框架组合成一个大 gif。但是,如果通过一些简单的命令已经可以做到这一点,我不想重新发明轮子。

除了 imagemagick 之外,我当然对其他免费选项持开放态度。

animated-gif imagemagick images

10
推荐指数
1
解决办法
2282
查看次数

ImageMagick Convert:如何从 SVG 文件生成锐利调整大小的 PNG 文件?

我使用这个命令来生成一个清晰的 512px 宽版本的 SVG 文件,我有:

convert -geometry 256 pinterest.svg pinterest.png
Run Code Online (Sandbox Code Playgroud)

这是源文件:

<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
         width="16px" height="16px" viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
<path fill="#231F20" d="M8,0C3.582,0,0,3.582,0,8c0,3.275,1.97,6.09,4.789,7.327c-0.022-0.559-0.005-1.229,0.139-1.837
        c0.154-0.649,1.029-4.359,1.029-4.359s-0.255-0.51-0.255-1.266c0-1.186,0.687-2.071,1.542-2.071c0.729,0,1.08,0.547,1.08,1.201
        c0,0.73-0.467,1.825-0.707,2.838c-0.2,0.85,0.426,1.541,1.262,1.541c1.515,0,2.537-1.947,2.537-4.253
        c0-1.753-1.181-3.066-3.329-3.066c-2.427,0-3.938,1.81-3.938,3.831c0,0.697,0.205,1.188,0.528,1.57
        C4.824,9.631,4.845,9.7,4.792,9.902c-0.039,0.147-0.126,0.502-0.163,0.643c-0.054,0.202-0.218,0.274-0.401,0.199
        C3.11,10.289,2.59,9.064,2.59,7.688c0-2.272,1.916-4.997,5.718-4.997c3.053,0,5.065,2.21,5.065,4.582
        c0,3.139-1.746,5.482-4.317,5.482c-0.864,0-1.677-0.467-1.955-0.996c0,0-0.464,1.844-0.562,2.199
        c-0.17,0.616-0.502,1.232-0.805,1.713C6.452,15.885,7.213,16,8,16c4.418,0,8-3.582,8-8S12.418,0,8,0z"/>
</svg>
Run Code Online (Sandbox Code Playgroud)

但是它会产生一个模糊的 PNG:

品趣

由于我的来源是矢量图,我希望得到清晰的图像。有没有办法这样做?

png svg imagemagick macos

10
推荐指数
2
解决办法
7066
查看次数

如何使用 ImageMagick (GraphicsMagick) 更改 PNG 的画布大小?(如何填充透明度?)

或者:如何使用非方形 PNG 并用透明度“填充”图像的“其余部分”,以便生成的方形图像将原始图像置于正方形的中心?

最终,我想要的是拍摄任何尺寸的任何 GM 支持格式的任何图像,并创建一个缩小的 PNG(例如,任一尺寸最大 40 像素),保持纵横比,为非方形填充透明度原始图像,并应用了已经准备好的 40x40 PNG 透明蒙版。

我已经知道如何缩小并保持纵横比;我已经有了应用我的复合材料的命令。我唯一缺少的部分是方形化非方形图像(用透明度填充)。

首选单命令;多命令链可接受。

(编辑)

额外信息:这是我正在使用的复合命令:

gm composite -compose copyopacity mask.png source-and-target.png source-and-target.png
Run Code Online (Sandbox Code Playgroud)

其中 mask.png 有我想要保留的 source-and-target.png 的白色像素和我想要删除(并变得透明)的 source-and-target.png 的透明像素。

graphics imagemagick images graphicsmagick

9
推荐指数
2
解决办法
1万
查看次数

在命令行中并排合并两个pdf文件

我有两个页数相同的 pdf 文件,并希望将每个页面与另一个文件中的相应页面进行比较。为此,我想将 File1.pdf 的第 1 页与 File2.pdf 的第 1 页合并,以便在新文档中获得一页。然后将 File1.pdf 的第 2 页与 File2.pdf 的第 2 页设为新文件的第 2 页。

这个问题中,我已经了解到我可以使用--nup以下pdfjam命令将两页放在一页上:

pdfjam File1.pdf File2.pdf --nup 2x1 --landscape --outfile File1+2.pdf
Run Code Online (Sandbox Code Playgroud)

使用ImageMagick包可以实现相同的目的:

montage *.pdf merged.pdf
Run Code Online (Sandbox Code Playgroud)

但这将第一个文件的第 1 页和第 2 页放在一起,稍后对第二个文件执行相同的操作 - 不是预期的。

我所做的是拆分两个文件。第一个文件的文件名是偶数,第二个是奇数(实际上我用适当的文件名重新创建了文件)。然后我再次合并所有文件

pdftk *.pdf cat output merged.pdf
Run Code Online (Sandbox Code Playgroud)

最后把两页放在一张纸上

pdfjam --nup 2x1 --landscape --outfile merged2up.pdf merged.pdf
Run Code Online (Sandbox Code Playgroud)

我可以编写一个带有循环的脚本,但我想知道是否有一个简单的单线来实现这一点?也许我没有找到正确的 pdfjam、pdftk 或 ImageMagick 命令?

pdf command-line imagemagick pdftk

9
推荐指数
1
解决办法
9557
查看次数

如何调整动画 webp 的大小?

我希望能够更改动态 webp 的大小。 样本图片。我发现这个网站就是这样做的。

那么我怎样才能在我自己的程序中实现类似的东西呢?我尝试使用 ImageMagick7 或 ffmpeg5,但失败了。

环境:

cat /etc/redhat-release:CentOS Linux 版本 7.8.2003(核心)

1.尝试了ffmpeg:

[developer@Dev_Payment_229 ~]$ /opt/ffmpeg-5/ffmpeg -i b.webp -vf "scale=320:-1" b_320.webp
ffmpeg version 5.1.1-static https://johnvansickle.com/ffmpeg/  Copyright (c) 2000-2022 the FFmpeg developers
  built with gcc 8 (Debian 8.3.0-6)
  configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gmp --enable-libgme --enable-gray --enable-libaom --enable-libfribidi --enable-libass --enable-libvmaf --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 …
Run Code Online (Sandbox Code Playgroud)

ffmpeg imagemagick image-processing centos-7 webp

9
推荐指数
2
解决办法
2335
查看次数

如何在一维中拉伸图像?

标题说了很多,但我会详细解释一点。

我只需要在一维中拉伸图像。也就是说,如果图像是例如 100x100(宽 x 高),我需要它是 100x104(宽 x 高)。

如果可以将其拉伸一定百分比(而不是以像素为单位输入尺寸),那将是完美的。

任何人都知道如何做到这一点?我尝试查看 ImageMagick 工具集,但没有找到我可以使用的任何东西(虽然不是说我没有错过它)。

无论如何,我会感谢我能得到的所有帮助。

bitmaps imagemagick image-processing

8
推荐指数
1
解决办法
6945
查看次数

使用 FFmpeg / ImageMagick 从 MP4 中获取清晰、清晰的缩略图

我的最终目标是从 30 分钟或 1 小时长的视频中获取有意义的快照。“有意义”有点野心,所以我简化了我的要求。

图像应该清晰 - 不模糊。

最初,我认为这意味着获得“关键帧”。由于关键帧很多,我决定选择最接近视频第三分钟的关键帧,这对我来说通常“有意义”。我遵循了以下建议:FFmpeg 命令找到最接近第 3 分钟的关键帧

但问题是这些关键帧通常(并不总是)模糊。一个例子是:

在此处输入图片说明

然后我尝试使用 FFmpeg 为视频制作有意义的缩略图,这确实有助于获得更有意义的快照,但我仍然经常(并非总是)得到像上面这样的模糊帧。

您会注意到这种图像本质上是 2 个不同场景的重叠。然而,有时我会得到对我有用的图像 - 像这样:

在此处输入图片说明

上图意义不大,但很清晰。

理想情况下,我希望 FFmpeg 不返回模糊帧。或者,我想使用脚本来检测模糊帧并从 5 帧中选择最不模糊的帧。有谁知道如何做到这一点?

ffmpeg imagemagick

8
推荐指数
1
解决办法
5158
查看次数

ImageMagick mogrify 不会覆盖原始文件

我想转换图像格式。

我可以使用“转换”命令,但它制作了另一个图像。

所以我在 ImageMagick 官方页面搜索并找到了“mogrify”命令。

我所做的是

mogrify -format png a.jpg
Run Code Online (Sandbox Code Playgroud)

我期望的是一张带有“png”扩展名的图像。

但它没有覆盖原始图像,而是在我的文件夹中制作了另一个 png 图像。

我怎样才能以某种格式只获得一张图像(这意味着覆盖原始文件)

我想要的?

谢谢:-)

format imagemagick

8
推荐指数
1
解决办法
6130
查看次数

如何使用 ImageMagick 创建与 PocketBook 兼容的 BMP 文件?

PocketBook 611是一款黑白电子书阅读器。PocketBook 611(以及推出触摸显示器之前的类似型号)使用非常特殊的 BMP 格式作为其所谓的“断电徽标”(电子墨水显示屏关闭时的壁纸)。

我可以使用 Paint.NET 创建兼容的 BMP 文件,但我想自动化我的工作流程并使用 ImageMagick。正确的 BMP 格式通过以下方式检测file

$ file good.bmp 
good.bmp: PC bitmap, Windows 3.x format, 600 x 800 x 8, resolution 3779 x 3779 px/m, 256 important colors, cbSize 481078, bits offset 1078
Run Code Online (Sandbox Code Playgroud)

但是,当我使用 ImageMagick 创建 BMP 文件(例如convert input.jpg output.bmp)时,我在 PocketBook 上收到有关位图图像格式不兼容的错误。

ebook bmp imagemagick

8
推荐指数
1
解决办法
899
查看次数