gpt4 book ai didi

svg - 如何将 SWF/DisplayObject 转换为 SVG 数据?

转载 作者:行者123 更新时间:2023-12-01 11:05:12 24 4
gpt4 key购买 nike

有什么可以将 Swf 或 DisplayObject 转换为 SVG 的吗?

我正在尝试找到一种从 swf/矢量形状生成大尺寸 JPG 的方法。当前来自 AS3 的 jpg export() 对 jpg 大小和分辨率有限制。

所以我想我可以将 SVG 数据发送到 ImageMagick。

谢谢!

艺术

最佳答案

如果它是一个复杂的 SWF,您可能需要使用适当的工具对其进行反编译,然后导入矢量资源并将它们转换/重新保存为 svg。

如果它只是形状(没有位图/形状),您可以使用 awesome AS3SWF library它是 SVGhapeExporter。

这是一个快速类(class):

package {
import com.bit101.components.*;
import com.codeazur.as3swf.*;
import com.codeazur.as3swf.exporters.SVGShapeExporter;
import com.codeazur.as3swf.tags.*;
import com.codeazur.as3swf.tags.*;

import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.utils.*;


public class SWF2SVG extends Sprite {

private var swfFile:FileReference;
private var svgFile:FileReference;
private var status:Label;
private var load : PushButton;
private var save : PushButton;
private var svg:XML;
private var filename : String;

public function SWF2SVG() {
init();
}
private function init():void{
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
drawGUI();
}
private function drawGUI() : void {
var vbox:VBox = new VBox(this);
var buttons:HBox = new HBox(vbox);
load = new PushButton(buttons,0,0,"Load SWF",selectSWF);
save = new PushButton(buttons,0,0,"Save SVG",selectSVG);save.enabled = false;
status = new Label(buttons,0,0,'load a SWF file');
}
private function selectSWF(event:MouseEvent):void{
swfFile = new FileReference();
swfFile.addEventListener(Event.SELECT,swfSelected);
swfFile.addEventListener(Event.COMPLETE,swfLoaded);
swfFile.browse([new FileFilter("SWF File (*.swf)", "*.swf")]);
}
private function selectSVG(event:MouseEvent):void{
svgFile = new FileReference();
var bytes:ByteArray = new ByteArray();
bytes.writeUTFBytes(svg);
svgFile.save(bytes,filename.replace('.swf','.svg'));
}
private function swfSelected(event:Event):void{
swfFile.load();
filename = swfFile.name;
save.enabled = false;
}
private function swfLoaded(event:Event):void{
var bytes:ByteArray = swfFile.data;
var swf:SWF = new SWF(bytes);
var svgExporter:SVGShapeExporter = new SVGShapeExporter(swf);
for (var i:uint = 0; i < swf.tags.length; i++) {
var tag:ITag = swf.tags[i];
if (tag is TagDefineShape) TagDefineShape(tag).export(svgExporter);
}
svg = svgExporter.svg;
if(svg != null){
status.text = "ready! save the SVG file";
save.enabled = true;
}else status.text = "no shapes to export found";
}

}

}

你可以运行它here .

SWF2SVG preview

关于svg - 如何将 SWF/DisplayObject 转换为 SVG 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6542614/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com