AS3 - экспорт или сохранение спрайта как SVG или другого векторного формата
Я работаю над некоторыми генеративными арт-проектами в AS3 и продолжаю сталкиваться с проблемами с ограничением качества растровых изображений. Они не масштабируются и не редактируются, как векторы. Есть ли класс или библиотека, которую я могу использовать, чтобы взять графику объекта Sprite и экспортировать ее в формат SVG? Другие распространенные векторные форматы также являются приемлемыми.
Образец использования также будет принята с благодарностью.
Изменить: Обратите внимание, что я использую FlashDevelop, а не Adobe Flash CS. Я ищу программное решение.
7 ответов
Я пытаюсь экспортировать в svg самостоятельно, и меня немного удивляет, что так сложно найти svg-экспортера, поскольку он в значительной степени просто xml.
Я действительно сталкивался с xgraphics, хотя, это могло бы быть полезно.
на самом деле вам нужен только класс SVG. Он пытается имитировать графический класс в as3, но я обнаружил, что мне нужно добавить класс рисования полигонов.
/**
* graphics
*/
public function drawPolygon($points:Array):void {
var $pointsString:String = "";
for each (var $pt:Point in $points) {
$pointsString += (" " + $pt.x +"," + $pt.y);
}
var xml:XML = new XML('<polygon points="' + $pointsString + '" fill="' + uintToCSS2Color(fillColor) + '" stroke="' + uintToCSS2Color(lineColor) + '" stroke-width="' + strokeWidth + '"/>');
this.xml.appendChild(xml);
}
это позволяет мне делать треугольники и другие формы, передавая массив точек
Если вы работаете с генеративным искусством с использованием графического API (и / или с использованием готовых спрайтов с векторной графикой), то самым простым способом вывести их из печати является PDF. Это сохранит векторы, и вы можете позже импортировать их в нечто вроде Illustrator, чтобы сделать последние штрихи. Я сделал скриншоты своих игр таким образом, и это работает довольно хорошо. С обрезкой могут быть некоторые проблемы, но их следует избегать, если вы настроите масштабирование.
Как и предполагал грейпфрукт, PDF был моим первым, хотя тоже.
если вы не хотите использовать print как pdf (что является немного неуклюжим способом экспорта), существует также livepdf, который может работать.
Другой вариант - использовать библиотеку DEGRAFA, но я думаю, что для начала вам нужно будет сгенерировать графику с использованием библиотеки, но это даст вам возможность импортировать и экспортировать в формате SVG.
Раньше я отвечал на это по-другому сам, но, попробовав этот инструмент сам и не испытав особой удачи, я отправился на поиски чего-то другого и нашел этот проект под названием SWF2SVG на wonderfl. Он берет загруженный SWF и преобразует его в путь SVG, используя библиотеку as3swf.
Ссылка на инструмент SWF2SVG: http://wonderfl.net/c/sPjI
К сожалению, однажды в растровом формате вы не можете легко и просто преобразовать растровую графику в векторную. Есть некоторые инструменты, которые пытаются выполнить эту задачу, но они достигают смешанных результатов. Flash содержит встроенную функцию "Trace Bitmap", которая будет выполнять эту задачу, с выбранным изображением перейдите в "Modify > Bitmap > Trace Bitmap". Вам нужно будет поиграть с различными вариантами, чтобы попытаться достичь наилучшего результата, но даже в этом случае может потребоваться ручная настройка, чтобы привести в порядок артефакты и сбои.
Этот урок имеет достаточно хороший обзор того, что будет делать каждый вариант.
Ознакомьтесь с этой статьей о сохранении графики Flash в виде файлов изображений во время выполнения. У этого также есть живая демонстрация.
Кроме того, попробуйте этот флеш-фрейм для сохранения изображения (TIFF, BMP, JPG, GIF, PNG)
Взгляните на AS3 SWF Shape Export - SVGhapeExporter
должен делать красиво ( пример кода здесь).