我有一个缩小图像的脚本,但我注意到有些照片被放大了。例如,我有一张大小为808 Ko的照片,执行我的脚本后,图像的大小为1520 Ko。
为什么有些照片被放大而其他照片没有?
这是我的剧本:
$source = "P:\PAULINE DF informatique\Communication\*.jpg"
$exclude_list = "(LOGOS ET DIVERS SUPPORT|!CARTES DE VOEUX 2017|LOGO)"
$scale = 2.2
$source_listephotos = Get-ChildItem $source -Recurse | where {$_.FullName -notmatch $exclude_list}
$log = "U:\TEST\Photos - test\log_photo_2.txt"
foreach ( $source_photos in $source_listephotos ) {
$log_image = Get-Content "U:\TEST\Photos - test\log_photo_2.txt"
for ( $a = 1; $a -lt 100; $a++ ) {
Write-Progress -Activity "Working ..." -PercentComplete $a -CurrentOperation "$a% complete" -Status "Please Wait."
}
if ($log_image -eq $source_photos) {Write-Host OK}
else {
$source = [System.Drawing.Image]::FromFile($source_photos.FullName)
$size = "$([int]($source.Width/$scale)), $([int]($source.Height/$scale))"
$dest = New-Object System.Drawing.Bitmap($source, $size)
$source.Dispose()
$dest.Save($source_photos.Fullname)
$dest.Dispose()
}
if($? -eq $false){echo "$source_photos pas compressé" | out-file -append $log}
else
{echo "$source_photos" | out-file -append $log}
}
答案 0 :(得分:0)
这种情况会发生,因为文件默认以PNG格式保存。但是,文件扩展名不会更改,因此很难区分。这可以通过在十六进制编辑器中打开文件并检查PNG魔术字节89 50 4e 47 0d 0a 1a 0a
的标头来验证。 JPG标题以ff d8 ff
开头。
JPG是一种有损格式,可以很好地压缩照片。 PNG是无损的,不能像JPG那样利用相同的技巧来减小文件大小。因此,从JPG转换为PNG往往会增加文件大小。但并非总是如此,有些图像也是PNG格式的高度可压缩的。
作为解决方案,JPG格式的save the file是这样的,
$dest.Save("C:\path-to-file", [System.Drawing.Imaging.ImageFormat]::jpeg)