Я работаю над двумя сценариями Photoshop JavaScript (JSX), используя Photoshop 23.1.1 в Windows для автоматизации обработки спрайта. Первый сценарий направлен на то, чтобы подсчитать уникальные цвета в рамках спрайта (извлеченные с помощью версии 19 -го беспроигрышного SpriteSher) путем преобразования изображений в режим индексированного цвета и результатов регистрации в C:/Video Factory/color_log.txt. Второй скрипт предназначен для открытия спрайтов и центра их на холсте 512x512, опционально обрабатывая несколько файлов из папки. Оба сценария сталкиваются с постоянными ошибками, и мне нужна помощь в разрешении их. цвета Получил ошибку 8107: Указанное преобразование в режим индексированного цвета требует вариантов преобразования. />3. IndexedColormode объект: попытка var options = new IndexedColormode (); Options.palette = palette.exact; options.dither = dither.none; Options.colors = 256;, но получил ошибку 22: IndexedColormode не имеет конструктора. executeAction(charIDToTypeID("CnvM"), new ActionDescriptor().putClass(charIDToTypeID("T "), charIDToTypeID("IndC")), DialogModes.NO), but it also failed with Error 8107.
Current Script (Color Count):
#target photoshop
function getUniqueColorCount(doc) {
if (doc.mode != ChangeMode.RGB) {
doc.changeMode(ChangeMode.RGB);
}
var idconvertMode = charIDToTypeID("CnvM");
var desc = new ActionDescriptor();
var idtoMode = charIDToTypeID("T ");
desc.putClass(idtoMode, charIDToTypeID("IndC"));
executeAction(idconvertMode, desc, DialogModes.NO);
var colorTable = doc.colorTable;
return colorTable.length;
}
function processSprites(folder) {
var logFile = new File("C:/Video Factory/color_log.txt");
logFile.open("w");
logFile.writeln("Filename\tColor Count");
var files = folder.getFiles(function(file) {
return file instanceof File && (file.name.match(/\.(jpg|jpeg|png|tiff)$/i));
});
if (files.length === 0) {
alert("No image files found in the selected folder.");
return;
}
for (var i = 0; i < files.length; i++) {
var doc = app.open(files);
try {
var colorCount = getUniqueColorCount(doc);
logFile.writeln(files.name + "\t" + colorCount);
} catch (e) {
logFile.writeln(files.name + "\tError: " + e.message);
}
doc.close(SaveOptions.DONOTSAVECHANGES);
}
logFile.close();
}
var folder = Folder.selectDialog("Select the folder with sprites");
if (folder != null) {
processSprites(folder);
} else {
alert("No folder selected. Exiting script.");
}
< /code>
Проблемы: < /p>
Ошибка 8107 сохраняется, что указывает на то, что Photoshop требует вариантов преобразования, которые я не могу успешно предоставить. < /p>
< /li>
Руководство (изображение> режим> Индексированный цвет), но подмолт для настройки, которые не могут. /> < /li>
API, по-видимому, отвергает как объектные опции, так и менеджер действий для этой цели. < /p>
< /li>
< /ul>
Выпуск 2: Центрирующиеся сорты на 512x512 canvas < /p>
То, что я попробовал:
Sound Spript Script: Script Spript: 512x512 Canvas и центр его с использованием doc.activelayer.translate ((doc.width - spritewidth) / 2, (doc.height - spriteheight) / 2) после копирования и вставки. Это сработало для одного файла, но требовал жестко -кодированного пути.
Пытательская обработка: изменил скрипт, чтобы провести через папку с помощью папки. SelectDialog и обработать несколько спрайтов. Скрипт работает, но не может правильно центрировать спрайты, часто размещая их за центром или бросает ошибки, такие как ошибка 8802: общая ошибка Photoshop при обработке нескольких файлов.
Текущий скрипт (Canvas Centring): < /p>
#target photoshop
function createCanvas() {
var doc = app.documents.add(512, 512, 72, "Sprite Canvas", NewDocumentMode.RGB, DocumentFill.TRANSPARENT);
return doc;
}
function openSpriteAndPlace(spritePath) {
var sprite = app.open(new File(spritePath));
var doc = createCanvas();
var spriteWidth = sprite.width;
var spriteHeight = sprite.height;
var x = (doc.width - spriteWidth) / 2;
var y = (doc.height - spriteHeight) / 2;
sprite.selection.selectAll();
sprite.selection.copy();
doc.paste();
doc.activeLayer.translate(x, y);
sprite.close(SaveOptions.DONOTSAVECHANGES);
}
var folder = Folder.selectDialog("Select the folder with sprites");
if (folder != null) {
var files = folder.getFiles(function(file) {
return file instanceof File && (file.name.match(/\.(jpg|jpeg|png|tiff)$/i));
});
for (var i = 0; i < files.length; i++) {
openSpriteAndPlace(files);
}
}
< /code>
Проблемы:
Проблемы с центрированием: метод перевода иногда смешивает спрайты, особенно с различными размерами, и сценарий не всегда поддерживает новый холст на Sprite в режиме партий, что приводит к перекрытию. /> Нет экспорта: в скрипте отсутствует функция сохранения, и добавление Doc.SaveEs с пользовательским именем файла вызывает дальнейшие ошибки (например, ошибка 1302: файл уже существует без перезагрузки). < /p>
Вопросы:
Color Count: Как я могу исправить варианты конверсии в Changemode или действие, чтобы преобразовать в режиме индекса, не обработанной. /> Есть ли способ имитировать настройки ручного диалога в скрипте? Лучшие подходы (например, запись действий) для выполнения этих задач в сценариях Photoshop?
Подробнее здесь: https://stackoverflow.com/questions/797 ... ipt-issues
Photoshop JavaScript Проблемы сценария ⇐ Javascript
Форум по Javascript
1752447591
Anonymous
Я работаю над двумя сценариями Photoshop JavaScript (JSX), используя Photoshop 23.1.1 в Windows для автоматизации обработки спрайта. Первый сценарий направлен на то, чтобы подсчитать уникальные цвета в рамках спрайта (извлеченные с помощью версии 19 -го беспроигрышного SpriteSher) путем преобразования изображений в режим индексированного цвета и результатов регистрации в C:/Video Factory/color_log.txt. Второй скрипт предназначен для открытия спрайтов и центра их на холсте 512x512, опционально обрабатывая несколько файлов из папки. Оба сценария сталкиваются с постоянными ошибками, и мне нужна помощь в разрешении их. цвета Получил ошибку 8107: Указанное преобразование в режим индексированного цвета требует вариантов преобразования. />3. IndexedColormode объект: попытка var options = new IndexedColormode (); Options.palette = palette.exact; options.dither = dither.none; Options.colors = 256;, но получил ошибку 22: IndexedColormode не имеет конструктора. executeAction(charIDToTypeID("CnvM"), new ActionDescriptor().putClass(charIDToTypeID("T "), charIDToTypeID("IndC")), DialogModes.NO), but it also failed with Error 8107.
Current Script (Color Count):
#target photoshop
function getUniqueColorCount(doc) {
if (doc.mode != ChangeMode.RGB) {
doc.changeMode(ChangeMode.RGB);
}
var idconvertMode = charIDToTypeID("CnvM");
var desc = new ActionDescriptor();
var idtoMode = charIDToTypeID("T ");
desc.putClass(idtoMode, charIDToTypeID("IndC"));
executeAction(idconvertMode, desc, DialogModes.NO);
var colorTable = doc.colorTable;
return colorTable.length;
}
function processSprites(folder) {
var logFile = new File("C:/Video Factory/color_log.txt");
logFile.open("w");
logFile.writeln("Filename\tColor Count");
var files = folder.getFiles(function(file) {
return file instanceof File && (file.name.match(/\.(jpg|jpeg|png|tiff)$/i));
});
if (files.length === 0) {
alert("No image files found in the selected folder.");
return;
}
for (var i = 0; i < files.length; i++) {
var doc = app.open(files[i]);
try {
var colorCount = getUniqueColorCount(doc);
logFile.writeln(files[i].name + "\t" + colorCount);
} catch (e) {
logFile.writeln(files[i].name + "\tError: " + e.message);
}
doc.close(SaveOptions.DONOTSAVECHANGES);
}
logFile.close();
}
var folder = Folder.selectDialog("Select the folder with sprites");
if (folder != null) {
processSprites(folder);
} else {
alert("No folder selected. Exiting script.");
}
< /code>
Проблемы: < /p>
Ошибка 8107 сохраняется, что указывает на то, что Photoshop требует вариантов преобразования, которые я не могу успешно предоставить. < /p>
< /li>
Руководство (изображение> режим> Индексированный цвет), но подмолт для настройки, которые не могут. /> < /li>
API, по-видимому, отвергает как объектные опции, так и менеджер действий для этой цели. < /p>
< /li>
< /ul>
Выпуск 2: Центрирующиеся сорты на 512x512 canvas < /p>
То, что я попробовал:
Sound Spript Script: Script Spript: 512x512 Canvas и центр его с использованием doc.activelayer.translate ((doc.width - spritewidth) / 2, (doc.height - spriteheight) / 2) после копирования и вставки. Это сработало для одного файла, но требовал жестко -кодированного пути.
Пытательская обработка: изменил скрипт, чтобы провести через папку с помощью папки. SelectDialog и обработать несколько спрайтов. Скрипт работает, но не может правильно центрировать спрайты, часто размещая их за центром или бросает ошибки, такие как ошибка 8802: общая ошибка Photoshop при обработке нескольких файлов.
Текущий скрипт (Canvas Centring): < /p>
#target photoshop
function createCanvas() {
var doc = app.documents.add(512, 512, 72, "Sprite Canvas", NewDocumentMode.RGB, DocumentFill.TRANSPARENT);
return doc;
}
function openSpriteAndPlace(spritePath) {
var sprite = app.open(new File(spritePath));
var doc = createCanvas();
var spriteWidth = sprite.width;
var spriteHeight = sprite.height;
var x = (doc.width - spriteWidth) / 2;
var y = (doc.height - spriteHeight) / 2;
sprite.selection.selectAll();
sprite.selection.copy();
doc.paste();
doc.activeLayer.translate(x, y);
sprite.close(SaveOptions.DONOTSAVECHANGES);
}
var folder = Folder.selectDialog("Select the folder with sprites");
if (folder != null) {
var files = folder.getFiles(function(file) {
return file instanceof File && (file.name.match(/\.(jpg|jpeg|png|tiff)$/i));
});
for (var i = 0; i < files.length; i++) {
openSpriteAndPlace(files[i]);
}
}
< /code>
Проблемы:
Проблемы с центрированием: метод перевода иногда смешивает спрайты, особенно с различными размерами, и сценарий не всегда поддерживает новый холст на Sprite в режиме партий, что приводит к перекрытию. /> Нет экспорта: в скрипте отсутствует функция сохранения, и добавление Doc.SaveEs с пользовательским именем файла вызывает дальнейшие ошибки (например, ошибка 1302: файл уже существует без перезагрузки). < /p>
Вопросы:
Color Count: Как я могу исправить варианты конверсии в Changemode или действие, чтобы преобразовать в режиме индекса, не обработанной. /> Есть ли способ имитировать настройки ручного диалога в скрипте? Лучшие подходы (например, запись действий) для выполнения этих задач в сценариях Photoshop?
Подробнее здесь: [url]https://stackoverflow.com/questions/79700295/photoshop-javascript-script-issues[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия