Image Adobe Indesign CS5:如何访问图像';的名称、文件类型和其他属性?

Image Adobe Indesign CS5:如何访问图像';的名称、文件类型和其他属性?,image,adobe,adobe-indesign,extendscript,Image,Adobe,Adobe Indesign,Extendscript,我精通Javascript,但对Adobe的“Extendscript”不太熟悉。为了练习和更好地理解InDesign的代码结构,我尝试通过矩形.images访问图像的属性。 可以通过矩形访问图像的文件名吗?另外,我很感兴趣的是,是否可以通过这种方式访问图像的颜色属性,比如说将其转换为灰度? 以下是我目前的做法: for(var i = 0; i < app.activeDocument.rectangles.length; i++) { var imageType = ap

我精通Javascript,但对Adobe的“Extendscript”不太熟悉。为了练习和更好地理解InDesign的代码结构,我尝试通过
矩形.images
访问图像的属性。

可以通过
矩形访问图像的文件名吗?另外,我很感兴趣的是,是否可以通过这种方式访问图像的颜色属性,比如说将其转换为灰度?


以下是我目前的做法:

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.");
    }
}
for(var i=0;i

另外,是否可以使用
.rectangles.images.constructor.name
确定图像的文件类型?我想为PDF或JPEG添加一个额外的例子。

除非您想尝试确定JS对象的类型,否则不应该使用构造函数,在这种情况下,您不需要这样做,因为
images
集合只包含图像。文件属性实际上位于图像的相关对象上

请注意,这些都没有经过测试,我只是利用了我对JS的了解,修改了你的代码

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');
}
var rect=app.activeDocument.rectanges,
imgs,
文件路径,
hasImages=假;
对于(变量i=0;i0){
hasImages=true;
对于(var j=0;j
除非您想尝试确定它是什么类型的JS对象,否则您不应该使用构造函数,在这种情况下,您不需要这样做,因为
图像
集合只包含图像。文件属性实际上位于图像的相关对象上

请注意,这些都没有经过测试,我只是利用了我对JS的了解,修改了你的代码

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');
}
var rect=app.activeDocument.rectanges,
imgs,
文件路径,
hasImages=假;
对于(变量i=0;i0){
hasImages=true;
对于(var j=0;j
谢谢@prodigitalson!在你回答这个问题之前,我不知道
itemLink
filePath
属性。我从另一个来源获得了该文件,以及该系统的give-me文件路径,但当我将其导出为html时,它会将图像放在单独的文件夹中,这意味着图像也会被编码/附加到文件中。谢谢@prodigitalson!在您回答这个问题之前,我不知道
itemLink
filePath
属性。我从另一个来源获得了该文件,以及该系统的give me文件路径,但当我将其导出为html时,它会将图像放在单独的文件夹中,这意味着图像也会被编码/附加到文件中