Я новичок в Индизайне. У меня есть файл, содержащий изображения с обтравочными контурами Photoshop. Я хочу экспортировать все обрезанные изображения в папку. Я попытался сделать «Копировать ссылки на», и он успешно экспортировал исходные изображения. Однако мне нужны не исходные изображения, а обрезанные изображения. Есть ли способ экспортировать все обрезанные изображения в формате JPEG или TIFF, а не исходное связанное изображение? Короче говоря, я хочу экспортировать изображения без фона. Я надеюсь, что я имею смысл. У меня есть около 800-1000 изображений, поэтому метод пакетной обработки будет высоко оценен.
Я действительно нашел способ экспортировать изображения так, как я хочу. Мне просто нужно щелкнуть контейнер изображения (не изображение), перейти в «Файл»> «Экспорт», а затем экспортировать его в формате JPEG. Во всплывающем окне я выбираю выбор экспорта, максимальное качество и разрешение 2400. Он экспортирует изображения так, как я хочу. Но я должен сделать это один за другим. У меня только две проблемы:
Есть ли способ сделать это партиями? Например, выбрать все контейнеры изображений и автоматически экспортировать их один за другим?
Есть ли способ автоматически называть сохраненные файлы в соответствии с именем исходного изображения?
Спасибо за помощь!
Обновление: я нашел этот скрипт в одном из сообщений здесь и немного изменил его в соответствии со своими потребностями. Кажется, он работает в большинстве моих документов INDD, но не работает в других. Интересно, почему. Иногда я получаю сообщение об ошибке, что
Строка ошибки: null не является объектом
Источник: имя_файла = файл ( rect.graphics[0].itemLink.filePath ).name;
Я также заметил, что он пропускает некоторые объекты и не загружает все изображения. Я предполагаю, что он пропускает те, которые не находятся в прямоугольниках.
test();
function test()
{
var myDoc = app.activeDocument,
apis = myDoc.allPageItems, rect, fileName;
while ( rect = apis.pop() )
{
if ( !(rect instanceof Rectangle) || !rect.graphics[0].isValid ){ continue;}
fileName = File ( rect.graphics[0].itemLink.filePath ).name;
fileName = fileName.replace( /\.[a-z]{2,4}$/i, '.jpg' );
app.jpegExportPreferences.exportResolution = 2400;
app.jpegExportPreferences.jpegQuality = JPEGOptionsQuality.MAXIMUM;
//give it a unique name
var myFile = new File ("C:/Users/RANFacistol-Mata/Desktop/Image Trial/"+ fileName);
rect.exportFile(ExportFormat.JPG, myFile);
}
}
Есть ли способ изменить этот скрипт таким образом, чтобы вместо повторения всех прямоугольников я выполнял итерацию по всем объектам, очень похоже на нажатие этой кнопки «Далее»?
А затем проверьте, содержит ли этот объект изображение (jpg, tiff, psd, ai, eps). Если это так, то я экспортирую его, как написано выше.
Спасибо за помощь!
Спасибо за ваш вклад. Я объединил все ответы, которые я получил со всех разных форумов, на которые я обратился за помощью, и, наконец, придумал сценарий, который перебирает только связанные изображения и игнорирует, является ли контейнер прямоугольником, многоугольником или чем-то еще. Я также добавил счетчик, чтобы изображения не перезаписывались, если имена совпадают.
var myDoc = app.activeDocument,
apis = myDoc.links.everyItem().getElements(), items, fileName;
var i = 0;
while ( items = apis.pop() )
{
items = items.parent.parent;
if ( !(items.hasOwnProperty ("graphics") )){ continue; }
i++;
try{
fileName = File ( items.graphics[0].itemLink.filePath ).name;
fileName = i + "_" + fileName.replace( /\.[a-z]{2,4}$/i, '.jpg' );
}catch(e){};
app.jpegExportPreferences.exportResolution = 2400;
app.jpegExportPreferences.jpegQuality = JPEGOptionsQuality.MAXIMUM;
//give it a unique name
var myFile = new File ("Mypath"+ fileName);
items.exportFile(ExportFormat.JPG, myFile);
}
Да, чтобы проверить все элементы страницы на наличие изображений, а не только прямоугольники, нужно просто удалить !(rect instanceof Rectangle)
часть. И пока вы это делаете, также переименуйте переменную из rect во что-то вроде pageItem, чтобы она описывала, что она на самом деле содержит. Итак, ваш скрипт должен выглядеть так:
var myDoc = app.activeDocument,
apis = myDoc.allPageItems, pageItem, fileName;
while ( pageItem = apis.pop() ) {
if ( !pageItem.graphics[0].isValid ){ continue;}
fileName = File ( pageItem.graphics[0].itemLink.filePath ).name;
fileName = fileName.replace( /\.[a-z]{2,4}$/i, '.jpg' );
app.jpegExportPreferences.exportResolution = 2400;
app.jpegExportPreferences.jpegQuality = JPEGOptionsQuality.MAXIMUM;
//give it a unique name
var myFile = new File ("C:/Users/RANFacistol-Mata/Desktop/Image Trial/"+ fileName);
pageItem.exportFile(ExportFormat.JPG, myFile);
}
Заменять
if ( !(rect instanceof Rectangle) || !rect.graphics[0].isValid ){ continue;}
к
if ( !(rect instanceof Rectangle) && !(rect instanceof Oval) && !(rect instanceof Polygon)|| !rect.graphics[0].isValid ){ continue;}
Обратите внимание, что если вы импортировали одно и то же изображение несколько раз, последнее вхождение этого изображения заменит все остальные.