我是Javascript的中间人,但我对Adobe的“Extendscript”并不熟悉。为了练习和更好地理解InDesign的代码结构,我试图通过rectangles.images
访问图像的属性。
这可以通过rectangles.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.");
}
}
此外,是否可以使用.rectangles.images.constructor.name
确定图像的文件类型?我想添加一个额外的案例,例如PDF或jpegs。
答案 0 :(得分:3)
你不应该使用构造函数,除非你想尝试确定在这种情况下你不需要做什么类型的JS对象,因为images
集合只包含图像。 file属性实际上位于图像的相关Link
对象上。
注意这些都没有经过测试我jsut了解了JS和API documentation并重新编写了代码......
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');
}