我有很多照片,现在是清理混乱并释放一些磁盘空间的时候了。我知道 mogrify 非常适合批量调整大小。问题是,在某些目录中,我将小图像与大图像混合在一起。我想批量缩小所有大的,但不放大小的。
举个例子,我有一个代表在 3000x2000s 中有数十 MB 的图片。其中一些我已经缩小规模,以便我可以通过电子邮件发送给他们。它们可能是 1024x768。我想将大的缩小到 1600x1200,这是我喜欢的磁盘空间与质量的权衡。但是,使用mogrify或convert,较小的将被放大,这将浪费磁盘空间。
我发现了一些棘手的方式来使用identify与cut和一些脚本过滤小图片并mogrify别人,而是人,我们有了一个方法可以告诉mogrify不升迁我的图片...怎么样?
还有其他更适合的工具吗?
我认为命令选项中有一个简单的开关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)
有效,但我也需要它通过子文件夹递归。最简单的方法是什么?
理想情况下,我正在寻找要保留在目标中但仅包含处理后的图像的源目录结构。
有没有办法裁剪水平居中但不垂直居中的图像?例如,这是我想要裁剪图像的方式:
但是,使用命令mogrify -crop 250x250 -gravity North cat.jpg,我得到:
请注意,我将批量处理大约 10,000 张不同大小的图像,因此我无法明确选择要裁剪的确切区域。
我的这些文件位于./:
a.jpg
b.jpg
256/a.jpg
Run Code Online (Sandbox Code Playgroud)
我正在运行以下命令将文件转换为 256px:
a.jpg
b.jpg
256/a.jpg
Run Code Online (Sandbox Code Playgroud)
但该命令始终会覆盖 中的现有文件256,例如256/a.jpg. 尽管图像看起来相同,但git diff仍会检测到文件中的更改。如何避免使用 覆盖现有文件mogrify?
版本:
ImageMagick 7.0.10-23 Q16 x86_64 2020-07-05
64bit Mac OS X 10.15.6 19G73
Run Code Online (Sandbox Code Playgroud)
编辑:
我想要的结果是:
a.jpg
b.jpg
256/a.jpg (Unchanged)
256/b.jpg (Created)
Run Code Online (Sandbox Code Playgroud)
@Sam Forbis 的回答
使用convert -resize 256x256 *.jpg -append ./256/*.jpg将导致:
a.jpg
b.jpg
256/a.jpg (Unchanged)
255/a-0.jpg (Created)
256/a-1.jpg (Created)
Run Code Online (Sandbox Code Playgroud) 根据我提交研究论文的期刊编辑部,我被告知对我的光栅图像使用 TIFF 格式(最初我有 JPEG 和 PNG 图像)。
我尝试使用 ImageMagick 将这些图像转换为 TIFF 格式:
magick mogrify -format tiff *.{jpg,jpeg,png}
Run Code Online (Sandbox Code Playgroud)
然而,生成的 TIFF 图像都相对较大(文件大小大约是 JPEG/PNG 图像的 6.5 倍)。以下是一个示例:
# size filename
# ==================
36K image01.jpg
232K image01.tiff
140K image02.png
232K image02.tiff
Run Code Online (Sandbox Code Playgroud)
我不知道这是 TIFF 格式本身固有的还是其他格式。
有人可以启发我吗?