[CDR X4 и ранее] Seam Carving для CorelDraw

fersat

Участник
Топикстартер
Сообщения
40
Реакции
23
Недавно написал 8bf-фильтр для контекстно-зависимого масштабирования. Может кому-нибудь пригодится.
Демонстрация работы

Системные требования​

Операционная система:Windows XP или выше
Программное обеспечение:CorelDraw версии 13 или выше
Процессор:с поддержкой SSE4.1

Установка​

Скопировать файл 8bf соответствующей архитектуры (x86 или x64) в каталог Plugins. Расположение каталога указывается в параметрах CorelDraw.
Окно с настройками CorelDraw

Работа с фильтром​

Для того, чтобы применить фильтр нужно:
  1. Выделить растр в режиме RGB или CMYK
  2. Вызвать пункт меню "Растровые изображения->Подключаемые модули->Другой->Seam Carving"
  3. Пометить высоко-приоритетные участки левой клавишей мыши (зелёный цвет) и низко-приоритетные участки правой клавишей мыши (красный цвет)
  4. Нажать кнопку "Применить", затем "OK" для применения фильтра либо закрыть окно для отмены изменений.
В окне предварительного просмотра доступны следующие клавиши:
Левая кнопка мыши
Повысить приоритет участка изображения
Колесо мыши
Изменение размера кисти
Правая кнопка мыши
Понизить приоритет участка изображения
Ctrl + Средняя кнопка мыши
Перетаскивание изображения
Средняя кнопка мыши
Установить приоритет участка изображения по умолчанию
Ctrl + Колесо мыши
Изменение масштаба

Ограничения​

  • Поддерживается только RGB и CMYK
  • Альфа-канал будет удалён при обработке
  • Угол поворота не учитывается
  • Минимальный размер изображения 4x4
  • Для изображений в режиме CMYK цвета в окне предварительного просмотра будут отображаться некорректно, но на результат работы это не повлияет

Проект на github
 

Вложения

Это, конечно, замечательно, вы безусловно молодец.
Однако зачем такой дисбаланс целей и средств?
Зачем было заморачиваться с 8bf, если данное действие (или я чего то недопонимаю?) прекрасно реализуемо простым VBA макросом (ну, может, за исключением preview, или у вас внутри распознавание контента встроено?) Тем более, оно востребованно не только для растровых, но и для векторных изображений, причем, даже чаще.
 
На VBA непонятно как получить прямой доступ к растру (можно парсить CMX из буффера обмена, но это костыль и документации по CMX нет, Image.Pixels - медленно, Image.Tiles - только для чтения и не удобно), к тому же на VBA этот алгоритм будет работать очень медленно. К векторным изображениям Seam Carving не применим - вот описание алгоритма. Фильтр написал чисто по фану, насчёт его полезности я и сам сильно сомневаюсь.
 
Последнее редактирование:
  • Спасибо
Реакции: Jeine и _MBK_
На VBA непонятно как получить прямой доступ к растру (можно парсить CMX из буффера обмена, но это костыль и документации по CMX нет, Image.Pixels - медленно, Image.Tiles - только для чтения и не удобно), к тому же на VBA этот алгоритм будет работать очень медленно. К векторным изображениям Seam Carving не применим - вот описание алгоритма. Фильтр написал чисто по фану, насчёт его полезности я и сам сильно сомневаюсь.
Там и не нужен доступ к растру, насколько я понял, ваш плагин его только масштабирует и обрезает же?
 
С обрезкой, кстати, проблемы: из фильтра нельзя изменить размер растра, если попытаться это сделать через ActiveX, то фильтр не применится. Выкрутился помещением растра в PowerClip.
 
С обрезкой, кстати, проблемы: из фильтра нельзя изменить размер растра, если попытаться это сделать через ActiveX, то фильтр не применится. Выкрутился помещением растра в PowerClip.
Экстеншном тогда. ЕМНИС у экстеншнов доступ к растру есть.