Создать сложную фигуру в памяти

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

Tiburtsy

Топикстартер
15 лет на форуме
Сообщения
60
Реакции
14
Может кто знает, существует ли возможность создать сложную фигуру в памяти, а потом поместить её на полосу (что-то типа canvas, eps, bitmap (хотя хочется вектор), в памяти, как в С).
Рисую QR код из черных квадратов, 57х57=3249, из них черных примерно 1700, белые, естественно, пропускаю.
Оптимизации:
- scriptPreferences.enableRedraw=false использую
- doScript(fn, ScriptLanguage.JAVASCRIPT, [], UndoModes.FAST_ENTIRE_SCRIPT, "Create QR-code") использую
- rectangles.addPath динамически уменьшаю количество фигур
- несколько временных массивов
- видимость слоя не имеет значения
Добился выполнения ~ за 11 сек.
Думаю, что еще есть способ ускорить процедуру. Ваши соображения, мне больше в голову ничего не приходит. Спасибо!
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
в CC есть готовый генератор QR кодов, можно им воспользоваться
 

Tiburtsy

Топикстартер
15 лет на форуме
Сообщения
60
Реакции
14
Про CC я знаю, но у меня на работе лицензия на CS5.5. Также есть on-line генераторы, но хочется нативного, без лишних программ и линков. Кстати, а как вставляется код из CC? Линком? На что?
 

svlasov

Администратор
20 лет на форуме
Сообщения
2 228
Реакции
4 933
Кстати, а как вставляется код из CC? Линком? На что?
В хелпе сказано:
The generated QR code is a high-fidelity graphic object that behaves exactly like native vector art in InDesign. You can easily scale the object and fill it with colors. You can also apply effects, transparency, and printing attributes, such as overprinting, spot inks, and trappings to the object. You can copy-paste the code graphic as a vector graphic object into a standard graphics editor tool such as Adobe Illustrator.
Once placed inside a document, the QR code is treated as a traditional EPS object, except that a tooltip appears on hovering over the object, revealing the content details in the form of the embedded code.
 

Tiburtsy

Топикстартер
15 лет на форуме
Сообщения
60
Реакции
14
Вопрос на засыпку!
С каким уровнем коррекции ошибок создает CC-генератор свои коды? Распознается ли код при заполнении 20% его площади посторонним логотипом?
У меня все Ок, уровень коррекции кода - H, логотип газеты, каждый день, поток, много ссылок на сайт. Только рисуется код 11 сек + ещё несколько на генерацию.
 

cloud_in_the_sky

Участник
Сообщения
42
Реакции
37
Код:
var f = File('~/qr01');
f.open('w');
f.writeln('%!PS');
f.writeln('%%BoundingBox: 0 0 171 171');
f.writeln('3 3 scale');
for (var i = 0; i < 57; i++)
    for (var j = 0; j < 57; j++)
        if (Math.random() > 0.5)
            f.writeln(i, ' ', j, ' 1 1 rectfill');
f.close();
app.activeDocument.pages[0].place(f, [100, 100])[0].itemLink.unlink();
f.remove();
 

Oleg Butrin

20 лет на форуме
Сообщения
1 990
Реакции
1 216

Не по теме:
А я, ч-черт, электроники постскирипта н-ни черта не знаю… Н-надо учиться, а т-то вся эта м-магия слова, с-старье, ф-фокусы-покусы с п-психополями, п-примитив… Д-дедовские п-приемчики…
 
  • Спасибо
Реакции: kstati

Tiburtsy

Топикстартер
15 лет на форуме
Сообщения
60
Реакции
14
Код:
var f = File('~/qr01');
f.open('w');
f.writeln('%!PS');
f.writeln('%%BoundingBox: 0 0 171 171');
f.writeln('3 3 scale');
...
app.activeDocument.pages[0].place(f, [100, 100])[0].itemLink.unlink();
Отличный способ! Рисуется моментально по сравнению с моим. Получается, мы создаем PS-файл руками? Не знал такой приём. Возьму на вооружение. Попробую такой трюк выполнить в памяти. Спасибо!
 

dumbm1

10 лет на форуме
Сообщения
421
Реакции
196
С каким уровнем коррекции ошибок создает CC-генератор свои коды?
Всегда M (http://habrahabr.ru/post/127197/) Может где настраивается? Не нашёл.

Для CC есть и другое несложное решение: создать простую extension panel (говоря простую, я имею в виду extension panel на html/css/js), используя, например, вот эту библиотеку: http://www.jsqr.de/

Код, который js-движок Индизайна выполняет 12 секунд и дольше, в зависимости от уровня коррекции и размера кода, в extension panel (считай в браузере на основе Chromium) выполняется меньше секунды. Рисование и вставка на .jsx занимают тоже примерно ±секунду.

Правда я это всё в Иллюстраторе пробовал, может в Индизайне действительно намного дольше рисование векторного объекта занимает?
 
Последнее редактирование:

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
может быть связано с undo. если завернуть все в fast undo в InD, должно значительно ускориться
 
  • Спасибо
Реакции: dumbm1

dumbm1

10 лет на форуме
Сообщения
421
Реакции
196
"...использование FAST_ENTIRE_SCRIPT дает почти двукратный рост скорости..."
Но все равно медленно по сравнению с браузером. Причём, кажется, особенно медленно идёт работа с массивами, двумерными массивами, в то время, как в браузере тот же самый код выполняется более чем в десять раз быстрее. (например код 109х109 вычисляется и вставляется ~ за секунду). Была попытка написать генератор без массивов, только строки, тоже очень быстро генерируется (но там без выбора оптимальной маски).
 
Последнее редактирование:

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 235
Реакции
10 852
Не мудрено, адобовская ява совершенно не оптимизирована по скорости.
Лично я бы просто сделал нативный генератор и вызывал бы его, тем более, готовых полно.
 

dumbm1

10 лет на форуме
Сообщения
421
Реакции
196
нативный - это как, в смысле плагин?
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 235
Реакции
10 852
В смысле нативное приложение
Можно и плагин, но так проще
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
а надо оптимизировать? ну 12 секунд на код, ок. разве это смертельно?
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 235
Реакции
10 852
Ну смотря сколько кодов надо генерировать
Топикстартера явно скорость не устраивает
 
Статус
Закрыто для дальнейших ответов.