а ваш фотошоп делает расширенный (Exif): http://en.wikipedia.org/wiki/Exif Для него чуть-чуть по другому будет
Надо же, а я думал, что функции bridgeTalk реализуются библиотеками бриджа, для этого он и нужен. То есть, это только, так сказать "однофамильцы", при неустановленном бридже bridgeTalk будет работать все равно?во-первых, bridgeTalk это не Bridge. Bridge при его использовании даже не запускается.
function setResolution(jpgPath, resolution) {
var f = File(jpgPath);
f.encoding = 'BINARY';
f.open('r');
f.seek(18);
var str = f.read();
var replStr_300 = "\xff\xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x02\x01\x01\x2c\x01\x2c";
var replStr_250 = "\xff\xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x02\x01\x00\xfa\x00\xfa";
var replStr_200 = "\xff\xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x02\x01\x00\xc8\x00\xc8";
var replStr_150 = "\xff\xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x02\x01\x00\x96\x00\x96";
var totalStr;
switch (resolution) {
case 300:
totalStr = replStr_300 + str;
break;
case 250:
totalStr = replStr_250 + str;
break;
case 200:
totalStr = replStr_200 + str;
break;
case 150:
totalStr = replStr_150 + str;
break;
default :
return;
}
f.close();
f.open('w');
f.write(totalStr);
f.close();
}
Ну так и фотошоп не обязательно запускается при выполнении фотошоповского скрипта, но ресурсы жрет на себя - я это имел в виду.
На самом деле не обязательно перезаписывать весь файл, достаточно сделать так:PS. Не получилось поменять именно только 5 нужных байт: пришлось делать строку для замены с начала файла и до 18-го байта.
f.encoding = 'BINARY';
f.open('e');
f.seek(14);
var str = "\x01\x2c\x01\x2c";
f.write(str);
f.close();
Насколько я понимаю логику процесса, библиотека объектной модели AI загружает библиотеку объектной модели бриджа, которая, в свою очередь запускает библиотеку объектной модели фотошопа. Этот процесс происходит медленно и печально, как секс на похоронах.это как? а где скрипт выполняется? и почему шоп не запускается, а ресурсы жрет?
Может быть, и велосипед изобрёл, накидал «на коленке»:А как, люди добрые, привести произвольное число к виду "\x..\х..\х.."?
Есть какая-то функция упаковки в такой формат?
function decToCHex(inputInteger) {
var retval = "";
/** получаем 16-ричное текстовое представление числа */
var hexString = inputInteger.toString(16);
/** если его длина нечетная - приписываем-с ведущий ноль */
if (hexString.length%2 != 0) { hexString = '0' + output; }
/** далее для каждой пары символов приписываем ведущий \x */
while ( hexString.length != 0) {
var byte = '\\x' + hexString.substr(0,2);
hexString = hexString.substr(2);
retval += byte;
}
return retval;
}
Когда надо экпортировать большое количество артбордов (100) в jpeg скриптом это, как выяснилось в результате экспериментов, единственный вменяемый способ, особенно если артборды большие, много объектов, узлов и прозрачностей.я делаю экспорт в pdf, конвертирую в jpg фотошопом и сохраняю