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


0

我收到了大量由公司内部不同人员提交的图像。除了手动将所有这些图像之外,还有一种方法可以将高度/宽度至少为300dpi和1800px的图像“拒绝”到一个单独的文件夹中?

Answers:


2

没有标准可以做到这一点。
您需要某种脚本,这些脚本会定期在文件夹中运行,并将不符合您条件的文件移动到“已拒绝”文件夹中。
最简单的方法可能是使用ImageMagick编写脚本。
这是一组(免费)命令行实用程序,用于图像转换和/或操作。那里有一些命令可以查询许多不同图像格式的图像的大小/分辨率和色系。
ImageMagick的“ identify”命令可能会最有用。

例如:

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

0

提示:
ExifTool可用于Windows,并将根据元数据愉快地移动或复制文件。

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

注意:许多较旧且可能较新的傻瓜相机也默认设置为72 DPI,无法在相机中更改

例如,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变量中存在的目录中。或;C:\cmd-utils\在路径末尾添加例如,创建目录,将bat文件放置在目录中。
下载Exiftool.exe并将其放置在同一目录中。
当您开始cmd.exe运行bat文件时,将很简单sortimages

从那时起
cd /d DIR_WHERE_YOUR_IMAGES_LIVE
跟随
sortimages *.*
意志;

a)将所有图像的分辨率元数据重置为300 DPI,
b)将图像复制到名为SortedPictures-dir-tree(= parent dir,避免与当前作业冲突)中的一步的文件夹中。

每张图像将被放置到子文件夹中以进行拍摄,并具有一个反映其拍摄日期和时间的文件名。

轻微警告:这不是万无一失的,例如,元数据中没有创建日期的图像将不会放置在新目录中;它们将重置分辨率值并将其复制到原始文件名,并且原始文件将保留在原位,并在名称后添加一个附加的“原始”字样。

阅读更多信息:
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。

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

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

exiftool -p'$文件名$ ImageWidth $ ImageHeight'* .jpg | (同时读取fwh;如果[[$ w“ -gt” $ h“];然后t =” $ h“; h =” $ w“; w =” $ t“; fi;回显” $ f $ h “;如果[[$ h” -lt“ 1800”];然后mv“ $ f”“ REJECTED_ $ f”; fi;完成)

或作为简短的脚本²:

#!/ bin / bash

exiftool -p'$文件名$ ImageWidth $ ImageHeight'* .jpg \
| (
  在阅读时 做
    如果[“ $ w” -gt“ $ h”]; 然后
      t =“ $ h”
      h =“ $ w”
      w =“ $ t”
    科幻
    回声“ $ f $ h”
    如果[“ $ h” -lt“ 1800”]; 然后
      mv“ $ f”“ REJECTED_ $ f”
    科幻
  完成)

²要创建它;拾取notepadnano键入,另存为文件。这样做chmod 755 filename,它将像任何可执行文件一样运行。


完成 - 删除了主要的挑剔问题。
汉奴

1
不知道ExifTool,只是玩弄它。打印示例中的$ ImageWidth和$ ImageHeight将在各个字段中分割宽度高度。如果对-p使用包含单行“ $ Filename $ ImageWidht $ ImageHeight”的格式文件,则可以使用cmd.exe中的FOR命令解析输出以过滤大小。
Tonny

很好,我只是花了一些时间试图找到那些图像(ImageW / H)-无法将它们视作示例图像-很奇怪。FWIW:cmd.exe很奇怪,很多“解析”都隐藏在陌生的地方-如果可以的话,我会避免这样做。安装www.cygwin.com以获取“普通”外壳。
汉奴

我只是猜测字段名称,尝试了一下,它们就起作用了:-)在我的职业生涯中,我必须写过至少10000行CMD脚本,但是我随时都喜欢Unix-shell。过去,我经常使用cygwin,但是现在在Windows上,我更喜欢MobaXterm:一个带有外壳的可执行文件,大多数cygwin命令,ssh客户端,X服务器,scp。它甚至可以使用我现有的腻子会话。无需设置完整的cygwin环境,并且它是可移植的:无需本地管理员权限即可使用它。
托尼2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.