Пакетная Обрезка Изображения
У меня есть флэш-файл FLA, который содержит много изображений. Большая часть каждого изображения состоит из прозрачных пикселей с визуальным объектом где-то там. Каждое изображение в данный момент находится в {x:0, y:0}.
Я хочу обрезать прозрачные пиксели изображения до минимального ограничивающего прямоугольника, но сохранить объект в той же глобальной позиции. Это требует смещения обрезанного изображения в глобальное положение объекта на необрезанном изображении.
Это не такая большая проблема, но проблема заключается в том, что все изображения содержатся во флаге. Варианты, которые я вижу на данный момент:
исследовать JSFL, у объекта Bitmap есть getPixels, это в сочетании с операцией выбора и удаления может работать
сохраните fla в xfl и перечислите изображения и связанный xml с чем-то вроде Ruby + обработка изображений lib
Вопросы:
- Кто-нибудь знает заранее, если эта операция возможна в JSFL?
- Кто-нибудь делал много автоматической обработки файлов xfl?
- Есть ли готовый процессор изображений, который может выполнить эту операцию обрезки?
3 ответа
Должна быть возможность использовать такой язык, как Ruby, чтобы найти все файлы изображений в структуре каталогов проекта xfl и отредактировать их с помощью программы, такой как ImageMagick (которая бесплатна и работает с различными языками сценариев).
Этот парень хорошо объясняет, как получить доступ к вашим ресурсам из документа XFL: http://blog.mencio.com/?p=121
Вот ссылка на удаление пикселей границы на форуме ImageMagick: http://www.imagemagick.org/discourse-server/viewtopic.php?f=1&t=11103&start=0
Надеюсь, этого достаточно, чтобы вы начали.
Возможно, вы захотите попробовать выполнить обрезку автоматически в ActionScript во время использования изображений. Сдвиг цвета изображения в один цвет и использование пиксельных методов для определения ограничивающей области. Это похожая техника, используемая здесь.
Я решил эту проблему в Photoshop. Используя язык сценариев PS, выборка может иметь несколько регионов, и вы можете получить доступ к этим "островам" через код.
В приведенном выше примере я нашел (автоматически) положение {x,y} всех отдельных островов, обрезал графику острова и сохранил каждый остров в виде отдельного файла изображения. Местоположение {x,y} стало частью имени файла. Я не построил часть JSFL во Flash, которая бы считывала имена файлов и размещала их в соответствии с {x,y} в имени; но вместо этого сделал это вручную.
Если вы можете экспортировать все ваши изображения, вы можете использовать этот скрипт PS, чтобы найти местоположение и обрезать изображения. Было бы довольно непростой задачей написать сценарий JSFL для позиционирования изображений.