自动“拒绝”提交到文件夹的不符合特定分辨率/尺寸标准的图像?

自动“拒绝”提交到文件夹的不符合特定分辨率/尺寸标准的图像?

我收到了公司内不同人员提交的大量图片。除了手动浏览所有图片外,有没有办法将分辨率低于 300 dpi 且高度/宽度低于 1800 px 的图片“拒绝”到单独的文件夹中?

答案1

没有标准方法可以做到这一点。
您需要某种脚本定期遍历文件夹并将不符合条件的文件移动到“拒绝”文件夹。
最简单的方法可能是编写脚本图像魔术师
这是一组用于图像转换和/或处理的(免费)命令行实用程序。其中的命令可用于查询多种不同图像格式的图像的大小/分辨率和颜色深度。ImageMagick
的“identify”命令可能最有用。

例如:

$ identify rose.jpg
rose.jpg JPEG 640x480 sRGB 87kb 0.050u 0:01

答案2

提示:
ExifTool 适用于 Windows,并且可以根据元数据轻松移动或复制文件。

值得一提的是:“DPI”仅对打印或扫描的图像有效。标有“DPI”的元数据值可以通过使用 Exiftool 进行更改 - 与在计算机上查看文件或手头图像的“质量”无关。

注意:许多较旧或较新的傻瓜相机默认 DPI 为 72,并且无法在相机中更改

例如,Photoshop 会根据此值显示图像的大小,这简直就是“胡说八道”——开发人员的疏忽。您需要做的就是记录一个“操作”,将 DPI 值设置为 300 或更高(Resize image)——它会在几分之一秒内运行并保留图像“原样”;只需确保取消勾选[v] Resample image。从那时起,PS 就会跳过“胡说八道”到合理的水平。


示例:创建一个sortimages.bat包含以下一行的文件。

@exiftool -jfif:Xresolution=300 -jfif:Yresolution=300 -r -d ..\SortedPictures\%Y\%Y-%m-%d_%%f.%%e "-filename<createdate" %1

确保将其保存在 PATH 变量中存在的目录中。或者将 eg 添加;C:\cmd-utils\到 PATH 末尾,创建目录,将 bat 文件放在目录中。
下载 Exiftool.exe 并将其放在同一目录中。
当您开始cmd.exe运行该 bat 文件时,它将只是一个简单的sortimages.

从此便
cd /d DIR_WHERE_YOUR_IMAGES_LIVE
顺从了
sortimages *.*

A)将所有图像的分辨率元数据重置为 300 DPI,
b)将图像复制到SortedPictures目录树中名为 - 的文件夹中(=父目录,以避免与当前作业发生冲突)。

每幅图像将被放置在按拍摄年份划分的子文件夹中,并且其文件名将反映拍摄日期和时间。

稍微警告一下:这并非万无一失,例如,元数据中没有创建日期的图像将不会被放置在新目录中;它们将重置分辨率值并复制到原始文件名,而原始文件将保留在原处,并在名称后附加一个额外的“原始”。

更多内容:
https://raspberrypi.stackexchange.com/a/14359/17854
我想用 ImageMagick 更改 DPI,但不更改图像数据的实际字节大小

Exiftool -http://www.sno.phy.queensu.ca/~phil/exiftool/


现在拒绝尺寸对于 cmd.exe 用户来说可能是一个挑战(我认为没有简单的解决方案)。
我不知道 PowerShell 如何处理这种情况 - 但我希望它能“很好”:

exiftool -p '$Filename - $ImageSize' *.*
将在一个简单的表格中打印文件名和图像大小。


这里还有一个额外的内容;抱歉,我不太熟悉 cmd.exe 和 Powershell。

自动拒绝,在 Linux 或 www.cygwin.com 中使用bashshell

单行执行...(确保所有内容都;没有前导空格)

exiftool -p '$Filename $ImageWidth $ImageHeight' *.jpg | (读取 fwh 时;如果 [“$w”-gt“$h”] 则执行;然后 t="$h"; h="$w"; w="$t"; fi; echo "$f $h"; 如果 [“$h”-lt“1800”]; 然后 mv“$f”"REJECTED_$f"; fi; 完成 )

或者作为简短的脚本²:

/bin/bash #!/bin/bash

exiftool -p'$文件名$图像宽度$图像高度'*.jpg \
| (
  while 读取 fwh;执行
    如果 [ “$w” -gt “$h” ]; 然后
      t="$h"
      h="$w"
      w="$t"
    回显“$f $h”
    如果 [ “$h” -lt “1800” ]; 然后
      mv "$f" "REJECTED_$f"
  完毕 )

² 要创建它;选择notepadnano并输入,保存为文件。执行chmod 755 filename后,它将像任何可执行文件一样运行。

相关内容