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

  • Автор темы Автор темы Tiburtsy
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

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 сек.
Думаю, что еще есть способ ускорить процедуру. Ваши соображения, мне больше в голову ничего не приходит. Спасибо!
 
в CC есть готовый генератор QR кодов, можно им воспользоваться
 
Про CC я знаю, но у меня на работе лицензия на CS5.5. Также есть on-line генераторы, но хочется нативного, без лишних программ и линков. Кстати, а как вставляется код из CC? Линком? На что?
 
Кстати, а как вставляется код из 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.
 
Вопрос на засыпку!
С каким уровнем коррекции ошибок создает CC-генератор свои коды? Распознается ли код при заполнении 20% его площади посторонним логотипом?
У меня все Ок, уровень коррекции кода - H, логотип газеты, каждый день, поток, много ссылок на сайт. Только рисуется код 11 сек + ещё несколько на генерацию.
 
Код:
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();
 

Не по теме:
А я, ч-черт, электроники постскирипта н-ни черта не знаю… Н-надо учиться, а т-то вся эта м-магия слова, с-старье, ф-фокусы-покусы с п-психополями, п-примитив… Д-дедовские п-приемчики…
 
  • Спасибо
Реакции: kstati
Код:
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-файл руками? Не знал такой приём. Возьму на вооружение. Попробую такой трюк выполнить в памяти. Спасибо!
 
С каким уровнем коррекции ошибок создает 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 занимают тоже примерно ±секунду.

Правда я это всё в Иллюстраторе пробовал, может в Индизайне действительно намного дольше рисование векторного объекта занимает?
 
Последнее редактирование:
может быть связано с undo. если завернуть все в fast undo в InD, должно значительно ускориться
 
  • Спасибо
Реакции: dumbm1
"...использование FAST_ENTIRE_SCRIPT дает почти двукратный рост скорости..."
Но все равно медленно по сравнению с браузером. Причём, кажется, особенно медленно идёт работа с массивами, двумерными массивами, в то время, как в браузере тот же самый код выполняется более чем в десять раз быстрее. (например код 109х109 вычисляется и вставляется ~ за секунду). Была попытка написать генератор без массивов, только строки, тоже очень быстро генерируется (но там без выбора оптимальной маски).
 
Последнее редактирование:
Не мудрено, адобовская ява совершенно не оптимизирована по скорости.
Лично я бы просто сделал нативный генератор и вызывал бы его, тем более, готовых полно.
 
нативный - это как, в смысле плагин?
 
В смысле нативное приложение
Можно и плагин, но так проще
 
а надо оптимизировать? ну 12 секунд на код, ок. разве это смертельно?
 
Ну смотря сколько кодов надо генерировать
Топикстартера явно скорость не устраивает
 
Статус
Закрыто для дальнейших ответов.