2006-04-26

실습 - JPEG 변환

PNG, GIF, TIFF 등의 이미지 파일을 drag & drop으로 JPEG로 바꿔주는 droplet을 만들어봤습니다. 스크립트를 조금만 바꿔주면 다른 포맷으로도 쉽게 바꿀 수 있습니다. 비슷한 기능을 하는 프로그램들이 많이 있겠지만, 애플스크립트로도 할 수 있다는 것을 보여주기 위해 만들어봤습니다. 데스크탑이나 독에 위치시키면 쓸만할 것 같습니다.
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의 크기가 매우 크다면 스크립트가 끝나기 전까지 메모리를 불필요하게 차지하고 있을 수도 있기 때문인 것 같기도 합니다.

5 Comments:

Anonymous 익명 said...

좋은 강좌 계속 되기를 바랍니다. 그런데 애플스크립트 코드 부분은 사파리에서 가로로 너무 길게 나타나고 우측 사이드바를 지나가버립니다. 사파리에서 Pre 태그의 wrap이 안 통하기 때문으로 알고 있어요. 스크립트 코드 부분은 textarea 태그로 처리하면 사파리에서도 깔끔하게 보일듯 싶습니다.

3:57 오후  
Blogger iPotato said...

그렇군요. 사파리에서는 아예 확인도 해보지 않았습니다. 아직 작성한 글이 그다지 많지 않으니 사파리에서도 잘 보이도록 바꿔보겠습니다.

9:17 오후  
Blogger iPotato said...

overflow:auto; 라는 속성만 추가해주면 간단히 해결되는 것을 몰랐습니다. 역시 사람은 공부를 해야 하는가 봅니다.

10:20 오후  
Anonymous 익명 said...

>>그렇군요. 사파리에서는 아예 확인도 해보지 않았습니다./저는 메인 웹브라우저가 사파리입니다만 이곳을 둘러 볼 때는 까미노 사용했습니다. 이제 사파리에서 잘 보입니다.

>>역시 사람은 공부를 해야 하는가 봅니다./겸손의 말씀이십니다. 국내 인터넷 페이지는 이동이나 소멸이 심한 편인데 이곳의 좋은 내용이 변함없이 이곳에 있었으면 하는 바람입니다.

언제 시간 나시면 class(string, text, list, boolean, date 등)에 대해서 한번 짚고 넘어가면 초보자들에게 좋은 안내가 될 것 같습니다. 제가 애플스크립트 처음 배울 때 as text, as string 이나 각 명령이 리턴하는 클래스 등이 혼동스러웠거든요.

참, Comment moderation 괜찮으니 풀지 마십시오.

3:15 오전  
Blogger iPotato said...

ilovja님 충고 감사합니다.^^ 좀 더 공부해보고 정리해볼 기회를 갖도록 하겠습니다.

4:13 오후  

댓글 쓰기

<< Home