Экспорт jpg - как задать разрешение/Color mode?

Статус
Закрыто для дальнейших ответов.

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
Ответ: Экспорт jpg - как задать разрешение/Color mode?

а в фотошопе и так можно задать разрешение, без хаков
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 235
Реакции
10 852
Ответ: Экспорт jpg - как задать разрешение/Color mode?

Это понятно, но там другая проблема: http://forum.rudtp.ru/showthread.php?t=53285&p=625728&viewfull=1#post625728
К тому же, наверное, как то неуклюже для подобной простой операции целый фотошоп вызывать.
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
Ответ: Экспорт jpg - как задать разрешение/Color mode?

проблема то вполне понятная - один скрипт еще работает, а он уже другой хочет запустить. корректнее будет через bridgeTalk и синхронно
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 235
Реакции
10 852
Ответ: Экспорт jpg - как задать разрешение/Color mode?

Ну правильно, помимо фотошопа еще и бридж подключать. Хотя делов то - четыре байтика в файле подправить ;)
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
Ответ: Экспорт jpg - как задать разрешение/Color mode?

во-первых, bridgeTalk это не Bridge. Bridge при его использовании даже не запускается.

во-вторых, я говорю про то, что глупо записывать jpg из фотошопа, а затем в нем править что-то бинарно, когда можно перед записью все задать.
а ваш фотошоп делает расширенный (Exif): http://en.wikipedia.org/wiki/Exif Для него чуть-чуть по другому будет

если экспортить из Ill'a - не спорю, очень хороший хак, полагаю, что он мне тоже пригодится
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 235
Реакции
10 852
Ответ: Экспорт jpg - как задать разрешение/Color mode?

во-первых, bridgeTalk это не Bridge. Bridge при его использовании даже не запускается.
Надо же, а я думал, что функции bridgeTalk реализуются библиотеками бриджа, для этого он и нужен. То есть, это только, так сказать "однофамильцы", при неустановленном бридже bridgeTalk будет работать все равно?
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
Ответ: Экспорт jpg - как задать разрешение/Color mode?

установить надо, но при обращении к bridgetalk сам Bridge не запускается
впрочем, может он и без Bridge есть, не проверял
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 235
Реакции
10 852
Ответ: Экспорт jpg - как задать разрешение/Color mode?

Ну так и фотошоп не обязательно запускается при выполнении фотошоповского скрипта, но ресурсы жрет на себя - я это имел в виду. ;)
 

dumbm1

10 лет на форуме
Сообщения
421
Реакции
196
Ответ: Экспорт jpg - как задать разрешение/Color mode?

Вот эта штука вроде работает. Может быть есть какие-то замечания?

PHP:
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-го байта.
Но этот кусок вроде во всех jpg-файлах одинаковый.
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
Ответ: Экспорт jpg - как задать разрешение/Color mode?

Ну так и фотошоп не обязательно запускается при выполнении фотошоповского скрипта, но ресурсы жрет на себя - я это имел в виду. ;)

это как? а где скрипт выполняется? и почему шоп не запускается, а ресурсы жрет? :0
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 235
Реакции
10 852
Ответ: Экспорт jpg - как задать разрешение/Color mode?

PS. Не получилось поменять именно только 5 нужных байт: пришлось делать строку для замены с начала файла и до 18-го байта.
На самом деле не обязательно перезаписывать весь файл, достаточно сделать так:
Код:
  f.encoding = 'BINARY';
  f.open('e');
  f.seek(14);

  var str = "\x01\x2c\x01\x2c";
  f.write(str);


  f.close();
Но, предварительно, желательно все таки считать заголовок и проверить его на
\xff\xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x02\x01, просто, во избежание. ;)

это как? а где скрипт выполняется? и почему шоп не запускается, а ресурсы жрет?
Насколько я понимаю логику процесса, библиотека объектной модели AI загружает библиотеку объектной модели бриджа, которая, в свою очередь запускает библиотеку объектной модели фотошопа. Этот процесс происходит медленно и печально, как секс на похоронах.
 

folique

Участник
Топикстартер
Сообщения
81
Реакции
0
Спасибо всем отписавшимся, вы очень помогли.
Немного оживим тему.
Как я понимаю, ExportFile хватает все, что есть на атрборде, причем только видимые (имеющие заливку/обводку) объекты.
Есть ли возможность экспортировать только выделенный фрагмент, но с учетом бесцветных объектов?
Спасибо.
 

morgenstern

Участник
Сообщения
21
Реакции
0
не работает CS4 win7 x64 стартует думает картинки нет =(
 

dumbm1

10 лет на форуме
Сообщения
421
Реакции
196
Если речь о скрипте exportToJpg_007b.zip, там в окне скрипта справа есть список слоёв. Надо выделить левой кнопкой нужный слой, а если несколько, то с <ctrl>.
Проверил в CS4 на win7x64 вот этот точно работает:
 

Вложения

  • exportToJpg_007c.zip
    11.1 КБ · Просм.: 351

folique

Участник
Топикстартер
Сообщения
81
Реакции
0
А как, люди добрые, привести произвольное число к виду "\x..\х..\х.."?
Например, когда задаем произвольное разрешение, а не выбираем из списка.
Есть какая-то функция упаковки в такой формат?
 

kstati

иɯɐɯɔʞ
10 лет на форуме
Сообщения
1 138
Реакции
512
А как, люди добрые, привести произвольное число к виду "\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;   
}
 
  • Спасибо
Реакции: dumbm1

kstati

иɯɐɯɔʞ
10 лет на форуме
Сообщения
1 138
Реакции
512
upd, ах да, если необходимо не текстовое представление, а бинарное - то упаковку надо использовать другую:
Код:
while ...
        var byte = String.fromCharCode(parseInt( hexString.substr(0,2), 16) );
...
 
  • Спасибо
Реакции: dumbm1

dumbm1

10 лет на форуме
Сообщения
421
Реакции
196
я делаю экспорт в pdf, конвертирую в jpg фотошопом и сохраняю
Когда надо экпортировать большое количество артбордов (100) в jpeg скриптом это, как выяснилось в результате экспериментов, единственный вменяемый способ, особенно если артборды большие, много объектов, узлов и прозрачностей.

А проблема в том, что Document.exportFile() медленнее, чем родная функция иллюстратора File>Export... в 2 и более раза. Единственный выход - сохранить все артборды в pdf - это довольно быстро, затем каждую страницу открыть фотошопом и сохранить в jpg. Иллюстратор при этом уже свободен.

Единственный пока неясный для меня вопрос - это как поставить в очередь следующий запрос к фотошопу на обработку очередного pdf-файла, ведь он занят обработкой предыдущего pdf и новый запрос от иллюстратора не обрабатывает...
 
Последнее редактирование:
Статус
Закрыто для дальнейших ответов.