실습 - JPEG 변환
PNG, GIF, TIFF 등의 이미지 파일을 drag & drop으로 JPEG로 바꿔주는 droplet을 만들어봤습니다. 스크립트를 조금만 바꿔주면 다른 포맷으로도 쉽게 바꿀 수 있습니다. 비슷한 기능을 하는 프로그램들이 많이 있겠지만, 애플스크립트로도 할 수 있다는 것을 보여주기 위해 만들어봤습니다. 데스크탑이나 독에 위치시키면 쓸만할 것 같습니다.
주석으로 언급한 image를 닫는 문제는 공부를 더 해야 명확한 설명이 가능할 것 같습니다. file을 읽거나 쓸 때에도 마찬가지로 만들어진 file class를 닫아주는 것이 좋습니다. 스크립트의 길이가 길어질 때 같은 이름의 변수가 사용될 수도 있기 때문일 것 같기도 하고, 만들어진 file이나 image의 크기가 매우 크다면 스크립트가 끝나기 전까지 메모리를 불필요하게 차지하고 있을 수도 있기 때문인 것 같기도 합니다.
on open theseFiles
-- droplet으로 만들기 위해 on open으로 시작합니다.
set thisPath to ((path to desktop folder) as string) & "iPotato:" as string
-- 변환된 파일이 저장될 경로입니다.
tell application "Finder"
if thisPath exists then
else
make new folder with properties {name:"iPotato", location:(path to desktop folder)}
end if
end tell
-- 해당 경로에 폴더가 있는지 확인한 후, 없으면 만듭니다.
tell application "Image Events"
repeat with thisFile in theseFiles
-- drag & drop 된 파일이 여러 개일 경우 repeat으로 하나씩 처리합니다.
set thisImage to open thisFile
-- 해당 파일을 Image Events가 처리할 수 있는 image class로 만듭니다.
save thisImage as JPEG in thisPath
-- 지정된 경로에 JPEG로 저장합니다. JPEG 대신 다른 이미지 유형을 적용할 수 있습니다.
close thisImage
-- 작업을 마쳤기 때문에 image를 닫습니다. 굳이 닫지 않아도 스크립트가 종료되면 시스템 메모리에서 사라지게 되지만, (미래를 위해) 닫아주는 것이 좋다고 생각합니다.
end repeat
end tell
end open
주석으로 언급한 image를 닫는 문제는 공부를 더 해야 명확한 설명이 가능할 것 같습니다. file을 읽거나 쓸 때에도 마찬가지로 만들어진 file class를 닫아주는 것이 좋습니다. 스크립트의 길이가 길어질 때 같은 이름의 변수가 사용될 수도 있기 때문일 것 같기도 하고, 만들어진 file이나 image의 크기가 매우 크다면 스크립트가 끝나기 전까지 메모리를 불필요하게 차지하고 있을 수도 있기 때문인 것 같기도 합니다.