Actionscript 3加载>;联合收割机>;并保存外部图像
我是ActionScript3的新手,因此提前感谢您提供的任何帮助。基本上,我要做的是加载2个或多个外部图像,大小和分辨率都相同,然后一个接一个地组合或合成它们,然后使用jpeg或png编码器将结果保存为新图像 我不想拍舞台的快照,我想用原始分辨率保存图像。到目前为止,我唯一能做的就是加载两张图片,并在舞台上合成它们。就这样 有人能告诉我如何做到这一点吗。我使用的是flash pro CS5.5,在类文件中编写代码,而不是在时间轴上。这是代码的副本Actionscript 3加载>;联合收割机>;并保存外部图像,actionscript,bitmap,save,encoder,Actionscript,Bitmap,Save,Encoder,我是ActionScript3的新手,因此提前感谢您提供的任何帮助。基本上,我要做的是加载2个或多个外部图像,大小和分辨率都相同,然后一个接一个地组合或合成它们,然后使用jpeg或png编码器将结果保存为新图像 我不想拍舞台的快照,我想用原始分辨率保存图像。到目前为止,我唯一能做的就是加载两张图片,并在舞台上合成它们。就这样 有人能告诉我如何做到这一点吗。我使用的是flash pro CS5.5,在类文件中编写代码,而不是在时间轴上。这是代码的副本 package package { 导
package
package
{
导入flash.display.MovieClip;
导入flash.display.Loader;
导入flash.net.URLRequest;
导入flash.events.*;
导入flash.display.Bitmap;
导入flash.display.BitmapData;
导入flash.utils.ByteArray;
公共类imageComposite扩展了MovieClip
{
var-images:Array=[“koala.png”,“koala2.png”];//两个图像
公共函数imageComposite()
{
//构造代码
var-thumbLoader:Loader;
对于(变量i:uint=0;i
}首先将两个
加载程序
对象放入一个单独的“holder”对象中
然后,您可以将此
byteArray
对象写入服务器或磁盘(桌面空中应用程序)。非常感谢您花时间提供您的知识,它非常有用。你给我的代码运行良好,只有一个例外。必须在函数外部声明“holder”变量。我得到了一点访问错误,但当我把它放在函数之外时,它工作得很好
无论如何,我已经扩展了代码,添加了保存的功能。我刚刚在舞台上放了一个名为“saveButt_mc”的电影剪辑。然后添加了使用fileReference保存的功能。我的目标是使用php将其自动保存到服务器上,但现在必须这样做
这是我的最终代码,再次感谢您的帮助
-D
{
导入flash.display.MovieClip;
导入flash.display.Loader;
导入flash.net.URLRequest;
导入flash.events.*;
导入flash.display.Bitmap;
导入flash.display.BitmapData;
导入flash.utils.ByteArray;
导入flash.display.Sprite;
导入flash.net.FileReference;
导入flash.net.FileFilter;
导入com.adobe.images.PNGEncoder;
公共类imageComposite扩展了MovieClip
{
var-images:Array=[“koala.png”,“koala2.png”];//两个图像
变量保持器:Sprite=新Sprite();
公共函数imageComposite()
{
//构造代码
儿童(持有人);
var-thumbLoader:Loader;
对于(变量i:uint=0;i
}
// constructor code
var holder:Sprite = new Sprite();
addChild(holder);
var thumbLoader:Loader;
for (var i:uint = 0; i < images.length; i++)
{
thumbLoader = new Loader;
thumbLoader.load(new URLRequest(("assets/" + images[i])));
holder.addChild(thumbLoader);
}
...
var bitmapData:BitmapData = new BitmapData(holder.width, holder.height, false);
bitmapData.draw(holder);
var byteArray:ByteArray = PNGEncoder.encode(bitmapData);
package
import flash.display.MovieClip;
import flash.display.Loader;
import flash.net.URLRequest;
import flash.events.*;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.utils.ByteArray;
import flash.display.Sprite;
import flash.net.FileReference;
import flash.net.FileFilter;
import com.adobe.images.PNGEncoder;
public class imageComposite extends MovieClip
{
var images:Array = ["koala.png","koala2.png"];//two images
var holder:Sprite = new Sprite();
public function imageComposite()
{
// constructor code
addChild(holder);
var thumbLoader:Loader;
for (var i:uint = 0; i < images.length; i++)
{
thumbLoader = new Loader ;
thumbLoader.load(new URLRequest(("assets/" + images[i])));
holder.addChild(thumbLoader);
}
//thumbLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, bmpData);
saveButt_mc.addEventListener(MouseEvent.CLICK, bmpData);
addChild(saveButt_mc);
saveButt_mc.buttonMode = true;
}
//need contentLoaderInfo to access loader data;
public function bmpData(evt:Event):void
{
var bitmapData:BitmapData = new BitmapData(holder.width,holder.height,false);
bitmapData.draw(holder);
var byteArray:ByteArray = PNGEncoder.encode(bitmapData);
var file:FileReference = new FileReference();
file.save(byteArray, "newImage.jpg");
trace("Event was completed successfully!");
}
}