반응형
1.
imagemagick 프로그램 이용사진 해상도를 조절하여 용량을 줄이는 방법으로 imagemagick 프로그램이 필요하다.
* imagemagick 공식 홈페이지(윈도우 설치)
https://imagemagick.org/script/download.php#windows
* imagemagick 윈도우 설치 링크
https://download.imagemagick.org/ImageMagick/download/binaries/ImageMagick-7.0.11-12-Q16-HDRI-x64-dll.exe
* 환경변수 설정(PATH 뒤에 본인의 imagemagick 폴더 이름 입력)
cmd or powershell > setx path "%PATH%;C:\Program Files\ImageMagick-7.0.11-Q16-HDRI"
https://imagemagick.org/script/download.php#windows
* imagemagick 윈도우 설치 링크
https://download.imagemagick.org/ImageMagick/download/binaries/ImageMagick-7.0.11-12-Q16-HDRI-x64-dll.exe
* 환경변수 설정(PATH 뒤에 본인의 imagemagick 폴더 이름 입력)
cmd or powershell > setx path "%PATH%;C:\Program Files\ImageMagick-7.0.11-Q16-HDRI"
사진 용량 줄이고자 하는 대상 폴더로 이동
> 마우스 우클릭 후 여기서 Powershell 창 열기
> 아래 스크립트 복사 후 Powershell 창에 붙여넣기
param([string]$path = ".\", [int]$minSize = 0, [switch]$jpg, [switch]$png, [switch]$gif, [switch]$verbose, [switch]$report)
function Get-Size
{
param([string]$pth)
"{0:n2}" -f ((gci -path $pth -recurse | measure-object -property length -sum).sum /1mb) + " mb"
}
function Get-Size-Kb
{
param([string]$pth)
"{0:n2}" -f ((gci -path $pth -recurse | measure-object -property length -sum).sum /1kb) + " kb"
}
function Compress-Images([string]$type) {
$params = switch ($type) {
"jpg" { "-compress jpeg -quality 32" }
"gif" { "-fuzz 10% -layers Optimize" }
"png" { "-depth 24 -define png:compression-filter=2 -define png:compression-level=9 -define png:compression-strategy=1" }
}
if ($report) {
echo ""
echo "Listing $type files that would be included for compression with params: $params"
} else {
echo ""
echo "Compressing $type files with parameters: $params"
}
Get-ChildItem $path -Recurse -Include "*.$type" |
Where-Object {
$_.Length/1kb -gt $minSize
} |
Sort-Object -Descending length |
ForEach-Object {
$file = $_.FullName
if ($report) {
$fSize = Get-Size-Kb($file)
echo "$file - $fSize"
} else {
if ($verbose) {
echo "Compressing $file"
$fileStartSize = Get-Size-Kb($file)
}
# compress image
if ($report -eq $False) {
iex "magick ""$file"" $params ""$file"""
}
if ($verbose) {
$fileEndSize = Get-Size-Kb($file)
echo "Reduced from $fileStartSize to $fileEndSize"
}
}
}
}
# begin compression process
$startSize = Get-Size $path
echo "Compressing images greater than $minSize kb in $path"
echo "---"
# determine whether to compress specific image types or all
$compressAll = $false
if (-NOT $jpg -AND -NOT $png -AND -NOT $gif) {
$compressAll = $true
}
# compress, or skip, each image type as directed
if ($jpg -OR $compressAll) {
Compress-Images "jpg"
}
if ($gif -OR $compressAll) {
Compress-Images "gif"
}
if ($png -OR $compressAll) {
Compress-Images "png"
}
# echo completion and stats
$endSize = Get-Size $path
echo ""
echo "DONE"
echo "Starting sizes: $startSize"
echo "Ending sizes: $endSize"
스크립트 17번 째 줄의 quality 값을 낮게 수정할 수록 사진이 더 압축되어 용량이 줄어든다. 2.
이미지 크기를 줄여 용량 감소 1번 사용방법과 동일
$source = "."
$exclude_list = '(Imprimerie|Photos)'
$scale = 30
Add-Type -AssemblyName System.Drawing
$source_listephotos = Get-ChildItem $source -Recurse |
where { $_.FullName -notmatch $exclude_list }
foreach ($source_photos in $source_listephotos) {
$source = [System.Drawing.Image]::FromFile($source_photos.FullName)
$size = "$([int]($source.Width*($scale/100))), $([int]($source.Height*($scale/100)))"
$dest = New-Object System.Drawing.Bitmap($source, $size)
$source.Dispose()
$dest.Save($source_photos.Fullname)
$dest.Dispose()
}
반응형
'업무 자동화' 카테고리의 다른 글
cmd 라우팅 테이블 배치파일 (0) | 2021.05.28 |
---|---|
cmd IP 변경 배치파일 (0) | 2021.05.28 |
유튜브(youtube) 자동 광고 스킵 (0) | 2021.04.30 |
github 자동화 스크립트 (0) | 2021.04.28 |
VBA 메크로 모음 (0) | 2021.04.28 |