我有一个Flash fla文件,其中包含大量的图像。每个图像的大部分都是由透明像素组成的,在某个地方有一个可视对象。此时的每张图像都在{x:0, y:0}处。
我想修剪掉图像的透明像素到最小的边界框,但保持对象在相同的全局位置。这需要将修剪后的图像移动到未修剪图像中对象的全局位置。
这不是一个大问题,但事实上,所有的图像都包含在一个fla是问题。我现在看到的选项是:
-
调查JSFL,位图对象有一个getPixels,这与选择和删除操作相结合可以工作
-
将fla保存为xfl,并使用Ruby +图像处理库枚举图像和相关xml
问题:
- 有没有人知道这个操作在JSFL中是可能的? 有人做过很多xfl文件的自动化处理吗?是否有现成的图像处理器可以执行此修剪操作?
应该可以使用Ruby这样的语言来查找xfl项目目录结构中的所有图像文件,并使用ImageMagick(这是免费的,可以与各种脚本语言一起使用)这样的程序对它们进行编辑。
这个家伙很好地解释了如何从XFL文档访问你的资产:http://blog.mencio.com/?p=121
下面是ImageMagick论坛上关于移除边框像素的链接:http://www.imagemagick.org/discourse-server/viewtopic.php?f=1& t = 11103,开始= 0
希望这足以让你开始。
你可能想尝试做修剪自动在ActionScript图像被使用。将图像颜色移位为单一颜色,并使用像素方法识别边界区域。这里使用的是类似的技术
我在Photoshop中解决了这个问题。使用PS的脚本语言,一个选区可以有多个区域,您可以通过代码访问这些"孤岛"。
在上面的例子中,我(自动地)找到了所有独立岛屿的{x,y}位置,修剪了岛屿的图形,并将每个岛屿保存为一个单独的图像文件。{x,y}位置成为文件名的一部分。我没有在Flash中构建JSFL部分,它将读取文件名并根据名称中的{x,y}定位它们;而是用手做的
如果你可以导出所有的图像,你可以使用这个PS脚本来找到位置和裁剪图像。编写一个JSFL脚本来定位图像将是一个相当简单的任务。