윈도우 에서 WebP 자동 변환 프로그램 만들기 – PowerShell

WebP

WebP 는 구글에서 개발한 이미지 포멧이다. 기존에 자주 사용 되던 JPEG, PNG, GIF 대비 품질 열화가 거의 없이 더 작은 파일 크기로 압축하기 위한 파일이다.

블로그의 SEO 전략 중 하나는 적절한 크기와 용량의 이미지를 사용 하는 것이다.

너무 큰 이미지는 블로그의 로딩 속도에 나쁜 영향을 주고 이는 구글 검색 엔진이 좋아하지 않는다.

그래서 같은 이미지라도 블로그에 포스팅 할 땐 SEO 를 고려해서 WebP 로 변환해서 사용하는 것이 좋다.

WebP 파일로 쉽게 변환하는 방법

기존 이미지 파일을 WebP 로 쉽게 변환 하는 방법이 있다. 이는 반디집으로 유명한 반디소프트가 개발한 소프트웨어 꿀뷰를 이용하는 것이다.

꿀뷰 공식 홈페이지

꿀뷰 공식 홈페이지 이미지

꿀뷰는 강력한 이미지 뷰어면서 이미지 변환 기능을 제공하는 관련 소프트웨어 중 최고 수준이라 자랑하고 싶다.

꿀뷰를 설치 했다면 이미지 우클릭 시 꿀뷰로 변환 버튼이 생성 되고 변환 화면에서 다양한 옵션이 제공 되는데 그 중 WebP 로의 변환도 제공 된다.

WebP 변환 자동화 하기

그런데 나는 역시 뼛속부터 개발자인 걸까…? 매번 이미지를 캡처 후 스크린샷 폴더에서 “직접 변환 → 이미지 호스팅 사이트 업로드 → 블로그에 붙여넣기” 과정이 너무 귀찮았다.

그래서 이중 스크린샷이 나의 별도 작업 없이 자동으로 변환 되면 좋지 않을까? 싶어 Windows PowerShell 을 이용해 이를 해결했다.

PowerShell

PowerShell 은 MS 에서 제공 되는 셸 및 스크립팅 언어이며 인터프리터의 기능을 동시에 지니고 있는 하나의 소프트웨어다.

.NET 프레임워크를 기반 으로인 스크립팅 언어의 기능을 제공해 윈도우에서 여러 작업을 자동화 하고 이를 실행 해준다.

비슷하게 CMD 명령어 실행을 .bat 파일에 작성하여 사용하는 것과 비슷하게 사용할 수 있지만, CMD 는 기본적인 파일의 이동, 삭제 혹은 프로그램 실행 등의 작업만 할수 있다면 PowerShell 은 더욱 확장되어 시스템 관리, 네트워크 관리 등 다양한 기능에 활용할 수 있다.

그래서 정리하자면, PowerShell 스크립트 작성을 통해 여러 작업을 자동화 할 수 있다는 뜻이다.

참고로, 나는 이 PowerShell 스크립트를 처음 써보며, 이를 이용해서 PNG 파일이 자동으로 WebP 로 변환되게 만들 예정이다.

구글 공식 WebP 변환 도구 cwebp 다운로드

cwebP 는 구글에서 제공하는 명령줄 유틸리티며 여러 이미지를 WebP 로 변환 하기 위해 사용된다..

명령줄 유틸리티는 CMD, PowerShell 등에서 명령어를 통해 사용 되는 소프트웨어 도구 들을 말한다.

예시로, cwebP 를 설치 한 후 다음과 같은 명령어를 통해 png 파일을 webp 로 변환 할 수 있다.

cwebp [옵션] -q 품질 설정 입력_파일명 -o 출력_파일명.webp
PowerShell

이를 사용하기 위해선 다음 다운로드 사이트에 접속, 자신의 OS 에 맞는 버전에 맞춰 다운로드 해 원하는 폴더 내 압축 해제 해두면 된다.

cwebp 다운로드 공식 사이트

cwebp 공식 사이트 모습

자동 변환 .ps1 파일 만들기

.ps1 파일은 PowerShell 의 .bat 파일이라 생각하면 된다. 스크립트를 작성하고 PowerShell 을 통해 실행 할 수 있는 파일이다.

이 스크립트를 작성하기 전에 cwebp 는 다운로드 및 압축해제 되어 있어야 한다.

아래 코드는 내가 작성하고 사용 중인 스크립트 코드다. 작성 시 텍스트 문서, notepad++ 등의 편집기로 작성하고 .ps1 확장자로 저장하면 된다.

작성 PowerShell 스크립트

# 변환 대상 폴더 설정
$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = "C:\이미지 경로"
$watcher.Filter = "*.png" # 감시할 파일 유형 설정
$watcher.IncludeSubdirectories = $false # 하위 폴더 포함 여부
$watcher.EnableRaisingEvents = $true

# 변환된 파일을 저장할 webP 폴더 경로
$destinationFolder = "C:\저장될 경로"

# webP 폴더가 존재하지 않으면 생성
if (-not (Test-Path -Path $destinationFolder)) {
    New-Item -ItemType Directory -Path $destinationFolder
}

# 'Created' 이벤트에 대한 이벤트 핸들러 추가
Register-ObjectEvent -InputObject $watcher -EventName Created -Action {
    param($source, $e)
    
    # 새 파일 경로
    $newFile = $e.FullPath
    
    # 원본 파일명에서 확장자를 제외한 파일명 추출
    $filenameWithoutExtension = [System.IO.Path]::GetFileNameWithoutExtension($newFile)
    
    # 변환된 파일 저장 경로 설정
    Write-Host "$destinationFolder"
	
	$destFile = Join-Path -Path $destinationFolder -ChildPath ($filenameWithoutExtension + ".webp")
    
    # cwebp를 사용하여 이미지 변환
    & "C:\설치된 cwebp 경로\bin\cwebp.exe" $newFile -o $destFile
    
    Write-Host "$newFile was converted to $destFile"
}

# 스크립트가 계속 실행되도록 대기
while ($true) {
    Start-Sleep -Seconds 10
}
PowerShell

ps1 파일 실행 권한 설정

코드 작성이 잘 되었다면 먼저 다음을 점검하자. 키보드의 윈도우 키를 눌러 PowerShell 을 관리자 권한으로 실행한다.

Powershell 관리자 권한 실행

정상적으로 실행 됬다면 다음 명령어를 입력하자.

Get-ExecutionPolicy
PowerShell

이는 PowerShell 의 .ps1 파일과 같은 스크립트를 실행 할 수 있는 권한을 확인하는 명령어다.

별도의 변경이 없을 경우 대부분 Restricted 이나 Unrestricted 등의 스크립트를 실행 할 수 없는 권한으로 설정되어 있다.

이 경우 다음 명령어로 RemoteSigned 로 설정해 줘야 한다.

Set-ExecutionPolicy RemoteSigned
PowerShell

입력 시 메시지가 표시 되면 Y 를 입력해 엔터하면 된다.

ps1 파일 실행하기

권한이 정상적으로 부여 됐다면 .ps1 파일을 우클릭 후 PowerShell 로 실행하면 된다.

파일 우클릭시 PowerShell에서 실행 메뉴가 있다.

정상적으로 실행이 되었다면 다음과 같이 표시 되었을 것이다.

PowerShell 스크립트 실행 후 모습

이 상태에서 자신이 설정한 이미지 폴더내에 PNG 파일을 생성하면 변환 되어 지정 폴더에 WebP 파일이 생성 된다.

만약, 위의 모습이 아니라 한글이 깨진 듯한 메시지가 출력 된다면, 이 파일을 저장 할 때 인코딩을 UTF-8 BOM 으로 설정해 주면 대부분 해결된다. NotePad++ 은 다음 방법으로 인코딩을 변경할 수 있다.

NotePad++ UTF-8 인코딩 변경

PowerShell 바로 실행하기

PowerShell 바로가기 생성

Windows 바로가기 를 통해 우클릭 후 PowerShell 실행 없이 더블 클릭으로 바로 실행 할 수 있다. 바탕화면 에서 “우클릭 → 새로 만들기 → 바로가기” 를 누르면 바로가기 생성 화면이 출력 된다.

출력 된 바로 가기 만들기 에서 항목에 powershell.exe -ExecutionPolicy Bypass -File “C:\경로\스크립트.ps1” 을 입력한다. 그 이후 더블 클릭 시 아까 만든 PowerShell 스크립트가 바로 실행 된다.

스크립트 시작 메뉴에서 사용

ps1 파일 자체는 시작 메뉴에 생성 할 수 없지만, 위에서 만든 바로가기는 Windows 시작 메뉴에 추가할 수 있다. 우클릭 후 시작메뉴에 고정하면 된다.

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x
목차
위로 스크롤