콘텐츠로 건너뛰기
Home » 일러스트레이터 자동화 스크립트 – .ai 파일을 JPG로 일괄 변환

일러스트레이터 자동화 스크립트 – .ai 파일을 JPG로 일괄 변환

요즘 일러스트레이터 버전에서는 이런게 지원되는지 모르겠는데, 간혹 필요하시다는 분들이 있어서 다시 올립니다.  특정한 폴더 내의 모든 일러스트레이터 파일을 자동으로  JPG로 변환하여 다른 폴더에 저장해주는 스크립트입니다.

파일 다운로드 링크 : https://app.box.com/s/nefi9wjejb2jnsgfsh848abmiog7hvqz

사용방법

  1. 다운로드 받은 파일을 압축을 풀어둡니다.
  2. 일러스트레이터를 실행합니다.
  3. File > Script > Other Scripts… 를 선택하여 압축을 풀어서 나온 스크립트 선택
  4. 원본 .ai 파일들이 들어있는 폴더를 묻는 대화상자가 나옵니다. 원본 파일 폴더를 선택합니다.
  5. jpg 파일을 저장할 폴더를 묻는 대화상자가 나옵니다. 대상 폴더를 선택합니다.
  6. 자동으로 한 개씩 파일이 열리며 jpg 파일로 저장합니다. 저장되는 파일 이름은 원본 파일과 같은 대신에 .jpg 로 끝나게 됩니다.

예전에 작성했던 코드가 워낙에 엉망이어서 정리를 좀 했고,원본 파일명에 한글 등이 들어있는 경우에 경고 박스가 뜨면서 동작이 중지되는 문제를 해결했습니다.
참고로 실행중에는 상당히 많은 메모리를 쓰는데, 이 때 일러스트레이터를 최소화 시키면 메모리 부족으로 중단될 수 있습니다.그리고 원본 파일이 1000개를 넘는 경우에 중간에 일러스트레이터가 자동으로 꺼졌다가 재시작할 수 있습니다.
아래는 소스코드.


// 지정한 폴더내의 모든 .ai 파일을 JPG 파일로 변환하여 일괄 저장한다.
// coded by sooop – 2017.07.12
// 파일이름에 한글이 들어있더라도 경고를 표시하지 않는다.
app.userInteractionLevel = UserInteractionLevel.DONTDISPLAYALERTS;
main();
function main(){
var sourceFiles = getSourceFiles();
if(sourceFiles != null){
var targetFolder = Folder.selectDialog("Select destination folder", new Folder('C:/'));
for(var i=0; i<sourceFiles.length; i++){
processFile(sourceFiles[i], targetFolder);
}
}
}
// 원본폴더로부터 처리할 파일의 배열을 리턴하는 함수
function getSourceFiles(){
var sourceFolder = Folder.selectDialog("Select source folder", new Folder('C:/')); // 폴더 지정 대화상자
if(sourceFolder != null){
var sfiles = sourceFolder.getFiles("*.ai");
if(sfiles != null && sfiles.length > 0){
alert(sfiles.length + " AI files found"); // ai 파일의 갯수를 보고한다.
return sfiles;
}
else{
alert("No AI file found. Process canceled."); //ai 파일이 없으면 장난치냐며 작업 종료.
}
}
return null;
}
// 파일 하나를 처리하는 함수
function processFile(aFile, destinationFolder) {
if(destinationFolder == undefined){
destinationFolder = Folder.selectDialog("Select destination folder", new Folder('C:/'));
}
var currentDoc = app.open(aFile, DocumentColorSpace.RGB);
var savingOptions = (function (){
var opts = new ExportOptionsJPEG();
opts.antiAliasing = true; //안티앨리어싱 적용
opts.artBoardClipping = false; //대지에 맞게 자르기 안함
opts.blurAmount = 0.0; //블러 없음
opts.qualitySetting = 100; //퀄리티는 100으로 (기본값이 30)
//opts.horizontalScale = 100; //가로크기지정
//opts.verticalScale = 100; //세로크기지정
return opts;
})();
var targetFile = makeFilePath(currentDoc.name, destinationFolder)
currentDoc.exportFile(targetFile, ExportType.JPEG, savingOptions);
currentDoc.close(SaveOptions.DONOTSAVECHANGES);
}
function makeFilePath(title, path){ //문서의 이름과 목적폴더를 파라메터로 받음
var newName = title.substring(0,title.lastIndexOf('.')) + '.jpg';
return new File(path + '/' + newName);
}

 

“일러스트레이터 자동화 스크립트 – .ai 파일을 JPG로 일괄 변환”의 25개의 댓글

  1. 감사드립니다. 검색하다가 우연히 발견 유용하게 잘 사용하겠습니다.

  2. 정말 도움 많이 되었습니다!
    DXF로 하나하나 변환하는 스크립트는 짰는데,
    혹시 배치 스크립트가 있을까 해서 검색해보니, 이렇게 멋지게 작성해주셨네요.
    감사합니다!

  3. 혹시 지금 질문 드려도 될지 모르겠습니다.
    참 좋은 자료 우선 감사하구요…
    저도 약 3000개의 파일을 JPg로 바꾸고자 하는데요
    JPG 해상도가 더 높어야 해서 (72dpi더군요)
    자바스크립트에 완전 문외한이라(오늘 처음 접했습니다)
    가이드 북 보며 어떻게 분석해보니
    function getJpgOptions(){   에서
            opts.qualitySetting = 100; 으로 맥시멈이더군요.
    그래서 혹시 ExportOptionsPhotoshop 으로 되지 않을까요?
    function getJpgOptions(){        if ( app.documents.length > 0 ){            var exportOptions = new ExportOptionsPhotoshop();            var type = ExportType.PHOTOSHOP;            var fileSpec = new File(dest);            exportOptions.resolution = 150;            app.activeDocument.exportFile( fileSpec, type, exportOptions );        }    }이렇게 무식하게 해봤는데 않되더라구요.흉보지 마시고 조금만 가르쳐 주시면 고맙겠습니다.감사합니다.http://blog.naver.com/adcom31

    1. 흉이라니요… 당치 않는 말씀을….
      해상도를 높여서 export 하는 방법, 물론 있습니다.
      qualitySetting 값은 JPEG 압축 수준을 결정, 즉 화질을 결정하는 부분입니다. 원하시는 부분은 크기가 큰 JPG를 얻고자 하시면 확대해주시면 됩니다.
      getJpgOptions() 부분에서
      exportOptions.verticalScaling = 416.67;
      exportOptions.horizontalScaling = 416.67;
      이라고 추가해주시면 300dpi 로 된 JPG를 얻을 수 있습니다. 제 기억이 가물가물해서요.. (일러 안쓴지 6년쯤…) 정확한 프로퍼티 이름은 레퍼런스 가이드북 보시면 나올 겁니다. Scale 인지 Scaling  인지 잘 기억이 안나네요.
      exportOptionPhotoshop은 아마 PSD로 내보낼 때 사용하는 옵션 객체일 겁니다.

      1. 감사합니다. 가르쳐 주신 팁으로 성공 했습니다. 완벽하더군요. 좋은 인연 소중히 간직하겠습니다. 일러스트용 자바스크립트 PDF파일을 받아 놓고도 우선 급해서 덤비느라 읽어 보지도 못했습니다. 찬찬히 봐야 겠습니다. 도와주셔서 큰 도움 됐습니다.

        1.  일러스트레이터용 자바스크립트는 문법만 빌려왔을 뿐이지 자료구조나 여러 객체들은 자체적으로 구축되어 있기에 초보자가 접근하기에 사실 쉽지 않습니다. 하지만 차근차근 보시다보면 이해하기가 어렵지만은 않을겁니다. 도움이 되었다니 다행입니다. 감사합니다.

      2. 검색하다가 여기까지 흘러 왔습니다. 저도 고해상도가 필요해서 sooop님이 알려주신대로 했는데요.(자바는 아에 모릅니다)
        error21: undefined is not an object.
        line: 49
        -> opts.exportOptions.verticalScale = 416.67;
        이런 에러가 뜹니다.
        // 파일 하나를 처리하는 함수
        function processFile(aFile, destinationFolder) {
        if(destinationFolder == undefined){
        destinationFolder = Folder.selectDialog(“Select destination folder”, new Folder(‘C:/’));
        }
        var currentDoc = app.open(aFile, DocumentColorSpace.RGB);
        var savingOptions = (function (){
        var opts = new ExportOptionsJPEG();
        opts.antiAliasing = true; //안티앨리어싱 적용
        opts.artBoardClipping = false; //대지에 맞게 자르기 안함
        opts.blurAmount = 0.0; //블러 없음
        opts.qualitySetting = 100; //퀄리티는 100으로 (기본값이 30)
        opts.exportOptions.verticalScale = 416.67;
        opts.exportOptions.horizontalScale = 416.67;
        //opts.horizontalScale = 100; //가로크기지정
        //opts.verticalScale = 100; //세로크기지정
        return opts;
        })();
        var targetFile = makeFilePath(currentDoc.name, destinationFolder)
        currentDoc.exportFile(targetFile, ExportType.JPEG, savingOptions);
        currentDoc.close(SaveOptions.DONOTSAVECHANGES);
        }
        이렇게 작성했습니다. 도와주세요 ㅠㅠ

        1. opts.exportOptions.verticalScale 이라고 쓰셨는데, 그냥 opts.verticalScale 이라고 하셔야 합니다.

          1. 안녕하세요? 답변 감사합니다.
            sooop님 말씀대로
            opts.verticalScale = 416.67;
            opts.horizontalScale = 416.67;
            이렇게 했는데요. 그래도 해상도가 72로 나옵니다. ㅠㅠ
            저렇게 하니까 에러는 안뜨로 작동은 합니다.
            300dpi가 나와야하는데 방법이 없을까요?
            현재 액션으로 수작업으로 하고는 있는데 파일이 아직도 많이 남아서요.
            부탁드립니다.
            다시한번 감사드립니다!!!

  4. 해결했습니다 ..알았어요 ..;]
    AI 열고 거기에다가 실행한다는거 ..ㅠ_ㅠ
    님 사랑합니다 …ㅠㅠㅠㅠㅠㅠㅠㅠㅠ AI파일 수정엄청해야 하는거 많았는데 덕분에 ..ㅠㅠ 살았습니다!

  5. 핑백: 20071112 :: 일러스트레이터 CS2에서 자바스크립트 사용하기

  6. 죄송합니다 다른포스트에다가 덧글을 입력했네요;
    이걸jpg변환스크립트를 일러스트10-preset/scripts/에서 복사하고
    스트립트창에서 바로 실행하니
    Folder selectdialog is not a function
    line:27
    –>var sourcefolder=
    folder selectdialog(“select folder contains
    ai files…,”dfltfolder);
    이런 메시지가 나오네요 왜그러죠?

    1. Folder.selectdialog 가 아닌지요?
      혹은 CS2 (ver 12)기준이라 10에서는 지원 안하는 기능일 수도 있습니다.
      자세한 건 확인을 해봐야겠네요.

  7. 핑백: Wireframe » 20080628 :: Save multiple AI files into AI9 format

  8. 유용한 스크립트 정말 감사합니다.
    그런데 png 변환 스크립트도 함께 공유해주시면 안될까요?
    부탁드립니다. ^^

    1. 해당 파일이 현재 존재하지 않는 관계로 빠른 시간 내에 공유해 드리지는 못할 듯 합니다. 시간이 나는대로 다시 작성해서 올려보도록 할게요. 방문 감사합니다~

  9. 포토샵의 배치만 써오다가 귀찮아 하기를 반복하던 찰나에 아주 잘 쓰고 있습니다. 감사합니다. ^^
    아참 그리고 스크립트 하면서 한가지 질문이 있는데 사용하기전 EPS포맷을 가장한 AI파일은 메세지가 하나 뜨더군요.
    ” Your current color settings honor CMYK profiles in linked content but profiles were set to be ignored when this documents was created ”
    항상 Enter에 동전을 꼽아놓고 -_-;;;;; 하고는 있습니다만 어쮜 근본적인 해결책은 아닌듯 싶어서 -_-;;;; 어떻게 스크립트를 구성해야할 까요?

    1. 제 컴퓨터에 현재는 일러스트레이터가 설치되지 않은 관계로 확인해 볼 수는 없습니다만, 우선 파일 오픈 시에 발생하는 alert창은 스크립트 상에서 프로파일 설정을 하는 것으로는 어려울 듯 싶습니다. 하지만 alert 함수를 재정의해서 무력화 시키는 방법은 있을 것으로 보이네요 스크립트 초두에 function alert(){} 라고 정의하면 되지 않을까 싶습니다만, 어디까지나 추측이고 테스트를 해보지는 못했습니다.

  10. 시각디자인 쪽으로 공부하면서 일하는 누나의 부탁으로
    단순 노가다 일처리를 맡게되었네요.
    약 1500개 가량 ai 파일을 jpg 파일로 변환하는거..
    script for web 으로 하나하나씩 해서 500개 하다가..
    다른 방법이 없을까……..생각해서 검색결과 여기까지 오게됐네요.
    정말 좋았습니다..ㅜㅜ그동안의 시간이 안타깝지만..
    아무튼 사용해봤는데 .. 이상하게도 배경색이 검정색으로 바뀌더군요.
    그래서 스크립트를 열어서 rgb 컬러를 확인했는데 분명 255.255.255로 되있고
    어떤 현상인지 알려주실수 있나요.. 내일까지 해야되는데 이 글을 보실려는지
    ㅜㅜ 보신다면 제발 부탁드립니다 메일로좀 보내주세요~~
    leemingyu@nate.com

    1. 이민규// matte 옵션을 없애면 될 듯도 합니다. 메일은 드렸습니다만, 도움이 되셨으면 좋겠습니다. ㅠㅠ

댓글이 닫혔습니다.