如何检查图像尺寸是否合适

如何检查图像尺寸是否合适

我在一个文件夹中有许多图像文件。大多数是 jpg,但也有一些 png、bmp、gif、tif(但如果没有其他文件,jpg 是最重要的)。同一文件夹中还有许多与图像文件同名的 xml 文件。因此有这样的文件:1.jpg、1.xml、a.png、a.xml、3g.bmp、3g.xml...

所有 xml 文件都只有 1 行:(<IMGRES WIDTH="1234" HEIGHT="567" />当然数字不一样)。

我正在寻找一些简单的方法来检查所有图像大小并确认它们是否与 xml 中的相同。所以我想要这样的输出:

imagename, xmlwidth x xmlheight, realwidth x realheight, match/error

这仅在 Windows 上且没有安装其他软件的情况下可行吗?

答案1

我不会比较它们,而是编写一个脚本来根据工具的输出重新创建 XML 文件,例如ImageMagick 的identify

我会从类似的事情开始

 for %f in (*.*) do ^
    identify -format '<IMGRES WIDTH="%w" HEIGHT="%h" />' %f% > %f%.xml

然后修复文件扩展名处理等等。


为了按照您的要求进行比较,我会使用更好的脚本语言(在我的情况下是 Perl,但我希望许多其他人会使用内置的 powershell)

您可以使用上面的代码,但将输出写入固定文件名,然后在 for 循环中使用fc和来生成所需的输出。if


为了仅使用内置工具执行您要求的操作,我会查看 powershell。

这是一个powershellcommunity.org 的示例您可以将其用作起点。

function _Get-ImageStream 
{ 
param ($File) 

$image = [System.Drawing.Image]::FromFile($File) 
$imageStream = New-Object System.IO.MemoryStream 
$image.Save($imageStream, [System.Drawing.Imaging.ImageFormat]::Jpeg) 

return $imageStream 
} 

[System.Reflection.Assembly]::LoadFile( "C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Drawing.dll") 

"Name|SizeInBytes|Width|Height" >> C:\JPGInfo.txt 

$path = "C:\Images\" 
$imageFiles = Get-ChildItem -Recurse $path -Include *.jpg 

foreach ($image in $imageFiles) 
{ 
$name = $image.Name 
$length = $image.Length 
$imageStream = _Get-ImageStream -File $image.FullName 
$width = $imagestream.Width 
$height = $imageStream.Height 

"$name|$length|$width|$height" >> C:\JPGInfo.txt 
}

相关内容