2012-06-15 4 views
0

저는 자바 스크립트와 중급이지만 Adobe의 "Extendscript"에 익숙하지 않습니다. InDesign의 코드 구조를 연습하고 더 잘 이해하기 위해 rectangles.images을 통해 이미지의 속성에 액세스하려고합니다.

rectangles.images을 통해 이미지의 파일 이름에 액세스 할 수 있습니까? 또한 이미지의 색상 속성에이 방법으로 액세스하여 그레이 스케일로 변환한다고하면 관심이 있습니까?

여기 내 접근 방식은 지금까지입니다 :

Adobe Indesign CS5 : 이미지의 이름, 파일 유형 및 기타 속성에 액세스하려면 어떻게합니까?

for(var i = 0; i < app.activeDocument.rectangles.length; i++) 
{ 
    var imageType = app.activeDocument.rectangles[i].images.constructor.name; 

    switch(imageType) 
    { 
     case "Images": 
      alert(app.activeDocument.rectangles[i].images.name); // "name" is not a valid property here! 
      break; 

     default: 
      alert("There are no images in this file."); 
    } 
} 

또한, .rectangles.images.constructor.name으로 이미지의 파일 형식을 결정할 수있다? 나는 PDF, jpeg 등의 추가 케이스를 추가하고 싶다.

답변

3

images 컬렉션에만 이미지가 포함될 것이기 때문에이 경우 수행 할 필요가없는 JS 오브젝트의 유형을 결정하고 시도하지 않으려면 생성자를 사용해야합니다. file 속성은 실제로 이미지의 관련 Link 객체에 있습니다. 이것의

참고 아무도 ... 난 내 JS의 지식과 API documentation을 데리고 코드를 재 jsut

var rect = app.activeDocument.rectangles, 
    imgs, 
    filePath, 
    hasImages = false; 

for(var i = 0; i < rect.length; i++) { 
    imgs = rect[i].images; 
    if(imgs.length > 0) { 

     hasImages = true; 
     for (var j = 0; j < imgs.length; j++) { 
     filePath = imgs[j].itemLink ? imgs[j].itemLink.filePath : null; 
     switch (imgs[j].imageTypeName) { 
      case 'jpeg': 
       alert('This is a JPEG:' + filePath); 
       break; 
      case 'pdf': 
       alert('This is a PDF: '+filePath); 
       break; 
      default: 
       alert('Default case - '+imgs[j].imageTypeName+': '+filePath); 
     } 
     } 
    } 
} 

if(!hasImages) { 
    alert('No images in document'); 
} 
+0

감사 @prodigitalson을 테스트하지 않습니다! 이 질문에 답할 때까지'itemLink'와'filePath' 속성을 알지 못했습니다. –

+0

다른 소스에서 파일을 가져 와서 해당 시스템의 파일 경로를 제공하지만 HTML로 내 보내면 나에게 이미지가 별도 폴더에 저장되고 평균 이미지는 인코딩되거나 파일에 첨부됩니다. –