ActionScript-byteArray转Bitmap
在AS3中,我把一张png图片的byteArray数据,请问如何把它转成Bitmap对象啊?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
在AS3中,我把一张png图片的byteArray数据,请问如何把它转成Bitmap对象啊?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
分享一个网上的,ByteArray和BitMap的相互转换,以及扣图
package
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.net.URLRequest;
import flash.utils.ByteArray;
public class ByteMapArray extends Sprite
{
public var url:String=new String("up/15.png");
public var loader:Loader=new Loader();
public var bitmapdata:BitmapData
public var bytearr:ByteArray=new ByteArray();
public var bytemap:Bitmap=new Bitmap();
public var newmap:Bitmap=new Bitmap();
public function ByteMapArray()
{
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,completeHandle);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,errorHandle);
loader.load(new URLRequest(url));
//this.addChild(loader);
}
public function completeHandle(evt:Event):void
{
trace("sucess");
bitmapdata=new BitmapData(80,90);
bitmapdata.draw(loader);
var temp:ByteArray=bitmapdata.getPixels(bitmapdata.rect);
bytearr.writeBytes(temp);
var bitmapdata2:BitmapData=new BitmapData(loader.width,loader.height);
bytearr.position=0;
bitmapdata2.setPixels(bitmapdata.rect,bytearr);
bytemap.bitmapData=bitmapdata2;
this.addChild(bytemap);
var picRect:Rectangle=new Rectangle(35,50,20,20);//从哪里开始扣,扣多少?
var point:Point=new Point(20,20);//将抠图放在newBitmapdata的那个位置
var newBitmapdata:BitmapData=new BitmapData(100,100);
newBitmapdata.copyPixels(bitmapdata2,picRect,point);
newmap.bitmapData=newBitmapdata;
newmap.x=200;
newmap.y=200;
this.addChild(newmap);
}
public function errorHandle(evt:IOErrorEvent):void
{
trace("error");
}
}
}
既然你有Bytes了 用loader.loadBytes就可以 然后取loader.content 应该是个Bitmap
看到过一个类似的问题:AS3/Air: PNG > File > FileStream > ByteArray > BitmapData
希望对你有帮助。
in the package flash.display, use Loader::loadBytes ... that'll give you a Bitmap, and the BitmapData can then be simply accessed through Bitmap::bitmapData ... this makes the whole operation asynchronous, of course ... the only thing you could do, is write a decoder yourself ...
now there is a PNG encoder in AS3, in the as3corelib and i guess there are even others, but probably most people considered it pointless to write a decoder, since flash does this in its own, and also encoding is easier than decoding, because decoding means, you have to implement the whole format ... still, you can give it a shot of course ...