2017-01-16 5 views
1

PhotoShop 용으로 작성된 JavaScript를 사용하여 배열을 반복하고 크기를 조정하고 파일 이름을 추가 한 다음 이미지를 저장합니다. 스크립트는 작동하지만 이미지 품질이 심각하게 떨어지며 이미지 품질을 유지하기 위해 옵션을 조정하는 방법을 파악할 수 없습니다. 내 원본 이미지는 전문적으로 찍은 사진이므로 3871x2571 픽셀이므로 품질 차이가 분명합니다.Photoshop CC 2017 스크립팅 내보내기 이미지 품질

JS는 :

영업에 내 의견으로 당
doc = app.activeDocument; 
doc.changeMode(ChangeMode.RGB); 
var docName = doc.name; 
var docTitle = docName.slice(0, -4); 

var options = new ExportOptionsSaveForWeb(); 
options.quality = 100; 
options.format = SaveDocumentType.JPEG; 
options.optimized = true; 

var sizes = new Array(); 
sizes[0] = 'sm'; 
sizes[1] = 'md'; 
sizes[2] = 'lg'; 
sizes[3] = 'xl'; 

//2x 
for(var i = 0; i < 4; i++) { 
    var widthVal = ''; 
    if(sizes[i] == 'sm') { widthVal = '480px'; } 
    if(sizes[i] == 'md') { widthVal = '960px'; } 
    if(sizes[i] == 'lg') { widthVal = '1440px'; } 
    if(sizes[i] == 'xl') { widthVal = '1920px'; } 

    var newName = docTitle+'_'+sizes[i]+'@2x.jpg'; 

    doc.resizeImage(widthVal,null, null, ResampleMethod.BICUBIC,0); 

    doc.exportDocument(File(doc.path+'/'+newName), ExportType.SAVEFORWEB, options); 
} 

//1x 
for(var i = 0; i < 4; i++) { 
    var widthVal = ''; 
    if(sizes[i] == 'sm') { widthVal = '240px'; } 
    if(sizes[i] == 'md') { widthVal = '480px'; } 
    if(sizes[i] == 'lg') { widthVal = '720px'; } 
    if(sizes[i] == 'xl') { widthVal = '960px'; } 
    var newName = docTitle+'_'+sizes[i]+'.jpg'; 

    doc.resizeImage(widthVal,null, null, ResampleMethod.BICUBIC,0); 

    doc.exportDocument(File(doc.path+'/'+newName), ExportType.SAVEFORWEB, options); 
} 
+0

그것은 첫번째 반복 그것은 480 감소 화상, 후속의 패스가 제 1 감속에 기초하여 크기를 증가 시키지만 때문에인가? 그렇다면 해결책은 원본 문서에서 시작하는 것이지만 어떻게해야합니까? – sinrise

답변

0

, 그것은 참으로 문제가 있었다. 각 루프 내부에서 파일을 열고 닫음으로써이 작업을 예상대로 수행 할 수있었습니다. 파일을 느리게 만들지 만 각 파일을 하나씩 저장하는 것보다 빠릅니다.

반드시 문제는 아니지만 먼저 파일을 요구함으로써이 코드를 개선하는 것이 좋습니다. : D

var options = new ExportOptionsSaveForWeb(); 
    options.quality = 100; 
    options.format = SaveDocumentType.JPEG; 
    options.optimized = true; 

    var sizes = new Array(); 
    sizes[3] = 'sm'; 
    sizes[2] = 'md'; 
    sizes[1] = 'lg'; 
    sizes[0] = 'xl'; 

    //2x 
    for(var i = 0; i < 4; i++) { 
     docFile = File("[full system path to file]"); 
     doc = open(docFile); 
     doc.changeMode(ChangeMode.RGB); 
     var docName = doc.name; 
     var docTitle = docName.slice(0, -4); 

     var widthVal = ''; 
     if(sizes[i] == 'xl') { widthVal = '1920px'; } 
     if(sizes[i] == 'lg') { widthVal = '1440px'; } 
     if(sizes[i] == 'md') { widthVal = '960px'; } 
     if(sizes[i] == 'sm') { widthVal = '480px'; } 

     var newName = docTitle+'_'+sizes[i]+'@2x.jpg'; 

     doc.resizeImage(widthVal,null, 3000, ResampleMethod.BICUBIC,0); 

     doc.exportDocument(File(doc.path+'/'+newName), ExportType.SAVEFORWEB, options); 

     doc.close(SaveOptions.DONOTSAVECHANGES); 
    } 

    //1x 
    for(var i = 0; i < 4; i++) { 
     docFile = File("[full system path to file]"); 
     doc = open(docFile); 
     doc.changeMode(ChangeMode.RGB); 
     var docName = doc.name; 
     var docTitle = docName.slice(0, -4); 

     var widthVal = ''; 
     if(sizes[i] == 'xl') { widthVal = '960px'; } 
     if(sizes[i] == 'lg') { widthVal = '720px'; } 
     if(sizes[i] == 'md') { widthVal = '480px'; } 
     if(sizes[i] == 'sm') { widthVal = '240px'; } 
     var newName = docTitle+'_'+sizes[i]+'.jpg'; 

     doc.resizeImage(widthVal,null, 3000, ResampleMethod.BICUBIC,0); 

     doc.exportDocument(File(doc.path+'/'+newName), ExportType.SAVEFORWEB, options); 

     doc.close(SaveOptions.DONOTSAVECHANGES); 
    }