如何将位图文件加载到 BitmapData 对象中?
Posted
技术标签:
【中文标题】如何将位图文件加载到 BitmapData 对象中?【英文标题】:How do you load a bitmap file into a BitmapData object? 【发布时间】:2010-10-16 16:10:44 【问题描述】:在 Flash 中,BitmapData 对象可用于将位图存储在 RAM 中,稍后您可以使用 beginBitmapFill() 方法将它们绘制到 MovieClip。
如何将外部位图文件 (.jpg) 加载到 BitmapData 对象中?
即使是 AS3 代码也会有所帮助。
【问题讨论】:
我真的不明白你为什么选择自己的答案而不是 Cotton 的答案。 因为我想要一个 AS2 解决方案。棉花的是 AS3。 【参考方案1】:用于加载 PNG 并“获取”其 bitmapData 的 AS3 代码
var bitmapData:BitmapData;
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
loader.load(new URLRequest("../lib/img.png"));
function onComplete (event:Event):void
bitmapData = Bitmap(LoaderInfo(event.target).content).bitmapData;
【讨论】:
只是一个注释。您不能为此使用 URLLoader 另一个说明。 Loader 将一些信息添加到位图,因此尝试直接从event.target.content
更改一些属性,如 name
。但是作为 OP 创建一个新的位图是好的。【参考方案2】:
参考棉花的第一篇文章。
实际上每个图像都是一个位图,所以你需要做的就是
bitmapData = event.target.content.bitmapData
而不是
bitmapData = Bitmap(LoaderInfo(event.target).content).bitmapData;
【讨论】:
不,LoaderInfo.content
是一个 DisplayObject。所有位图都是 DisplayObject,但并非所有 DisplayObject 都是位图,因此是强制转换。通过删除强制转换,您可以解决 ActionScript 语言的类型安全特性。【参考方案3】:
取自棉花和意志,这将在加载后显示位图:
import flash.display.Bitmap;
import flash.display.BitmapData;
var bitmapData:BitmapData;
var bmVis:Bitmap;
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
loader.load(new URLRequest("put url here"));
function onComplete (event:Event):void
trace("loaded!");
bitmapData = event.target.content.bitmapData;
bmVis = new Bitmap(bitmapData);
this.addChild(bmVis);
【讨论】:
【参考方案4】:您必须将外部文件 (.jpg) 加载到 MovieClip 并等待它加载。
然后将包含外部文件的 MovieClip 的快照放入您的 BitmapData 对象中。
myBitmap = new BitmapData(myMC._width, myMC._height,true,0x00FFFFFF)
myBitmap.draw( myMC)
见Introducing the Image API in Flash 8.
【讨论】:
【参考方案5】:GUI阶段: 将图像加载到库中(文件 -> 导入 -> 库)。 在库浏览器中,右键单击并点击“属性”,注意它是 X x Y 像素。 打开“高级”标签。 选择“为动作脚本导出”。导出为 myImg
Actionscript 阶段:
import flash.display.BitmapData;
import flash.display.Bitmap; //needed?
..........
var myPic:BitmapData = new myImg(X,Y);
【讨论】:
以上是关于如何将位图文件加载到 BitmapData 对象中?的主要内容,如果未能解决你的问题,请参考以下文章
ActionScript 3 将视频帧捕获到BitmapData(额外 - 将位图添加到PV3D材质)