我们现在有Bitmap和Bitmapdata对象.使用网络摄像头时,我们可以从中获取原始像素数据输出.但是,我们能以某种方式从"舞台"或"swf"对象获取原始像素数据吗?
我想用它来制作Actionscript应用程序某些部分的"小缩略图",这些可能是动态文本,位图图形和动画片段的复杂组合.因此,制作"快速捕捉"并将当前组合像素放入一个位图然后能够"保存以供以后使用"将会很棒.
那可能吗?太容易了吗?我只是在Adobe Docs中找错了地方?
我们在舞台上同时有图像,矢量等,所以我需要抓住"舞台"对象bitmapdata ???
我正在分析一些Flash代码,其中一种占用大量时间的方法是BitmapData.ctor.那是什么错误的?
我使用以下代码在图像上添加了黑白滤镜:
var n:Number = 1/3;
var matrix:Array = [n,n,n,0,0,
n,n,n,0,0,
n,n,n,0,0,
0,0,0,1,0];
var cmf:ColorMatrixFilter = new ColorMatrixFilter(matrix);
_bitmap.bitmapData.applyFilter(_buffer, _sourceRect, new Point(), cmf);
Run Code Online (Sandbox Code Playgroud)
我现在希望能够删除此过滤器,但我似乎无法弄清楚如何.我已经读过,如果我清除_bitmap.filters数组,它应该被删除,但是当我检查时,这个数组是空的.
有没有人对我怎么做这个有什么建议?
编辑 我正在使用FlashPunk游戏引擎,我正在操作Image.as类中的bitmapData.我的所有代码都是使用FlashDevelop编写和编译的.
编辑
由于flashpunk flashpunk引擎中的图像类使用bitmapData.CopyPixels()函数绘制位图,因此我无法将过滤器直接应用于位图.过滤器未应用于bitmapData,因此未绘制.
我已经更改了render方法以使用bitmapData.draw()函数,该函数使用实际的位图来绘制图像.
我现在可以通过执行以下操作向我的位图添加过滤器:
_bitmap.filters = [ColorMatrixFilter];
Run Code Online (Sandbox Code Playgroud)
然后我可以通过执行以下操作删除我的过滤器:
_bitmap.filter = [];
Run Code Online (Sandbox Code Playgroud) 我已将PNG转换为位图,然后将其转换为bitmapData.
我有一个名为的对象_player,我希望添加碰撞检测,但我似乎可以让它工作.
我的代码是:
if(bmd1.hitTest(new Point(_player.x, _player.y))){
trace("hit");
}
Run Code Online (Sandbox Code Playgroud)
bmd1是我的bitmapData,_player是希望测试的对象.
我收到以下错误:
1136: Incorrect number of arguments, Expected 3
Run Code Online (Sandbox Code Playgroud)
我环顾四周但是却找到了我所缺少的论点
有任何想法吗?
更新
我试过了
if(bmd1.hitTest(new Point(_player.x, _player.y), 50, _player)){
trace("hit");
}
Run Code Online (Sandbox Code Playgroud)
没有快乐
更新2
对不起,我应该提一下,我采用这种方法的原因是我有一个PNG,有透明区域,我需要测试非透明区域的碰撞,这就是我使用这种方法的原因
我有一个PNG,我导入并转换为位图,然后转换为 bitmapData
我可能完全错了.你能告诉我问题出在哪里吗?
我有bitmapData.我想使用URLLoader将其上传到服务器.我尝试了很多方法,但没有结果.这是我在ActionScript 3中的当前代码:
import flash.net.URLLoader;
import flash.net.URLRequest;
import mx.graphics.codec.JPEGEncoder;
...
var jpg:JPEGEncoder = new JPEGEncoder();
var myBytes:ByteArray = jpg.encode(bitmapData);
var uploader:URLLoader = new URLLoader();
var request:URLRequest = new URLRequest("uploadFile.php");
request.contentType = "application/octet-stream";
request.data = myBytes;
uploader.load(request);
Run Code Online (Sandbox Code Playgroud)
我拿一个对象bitmapData并将其编码为jpg.之后,我尝试将jpg-bytes发送到服务器上的文件"uploadFile.php".但既没有错误也没有积极的结果.我将不胜感激任何建议/意见.
我想检查一个BitmapData对象是否完全被BitmapData对象遮挡.有什么像hitTest函数,但确保每个像素被覆盖而不是任何像素?
编辑:检查对象是否被遮挡时,不包括透明像素非常重要.
如何为从BitmapData数组中获取的图像添加平滑?
我的代码:
con.addChild(new Bitmap(myImage[0]))
Run Code Online (Sandbox Code Playgroud)
谢谢.乌利
是否需要为每个想要完全从内存中删除的BitmapData调用BitmapData.dispose(),或者只要BitmapData对象被垃圾回收,该缓冲区是否会被释放?
我正从一些相机(RAW数据阵列)捕获数据.
然后我根据调色板将这些数据映射到RGB值.
我需要尽可能快地映射它,所以我使用BitmapDdata指针在不安全的代码片段中使用和编辑像素.
public void dataAcquired(int[] data)
{
Bitmap bmp = new Bitmap(width, height);
BitmapData data = bmp.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
for (int i = 0; i < data.Length; i++)
{
int x = i % bmp.Width;
int y = i / bmp.Width;
Rgb rgb = mapColors[data[i]];
unsafe
{
byte* ptr = (byte*)data.Scan0;
ptr[(x * 3) + y * data.Stride] = rgb.b;
ptr[(x * 3) + y * data.Stride + 1] = rgb.g;
ptr[(x * …Run Code Online (Sandbox Code Playgroud) 我想使用FileSteam.open()从磁盘同步读取图像文件.然后我可以使用readBytes()将它们放入ByteArray中,但是我找不到如何将它转换为BitmapData.我知道Image可以按原样读取,但我需要BitmapData.
有什么建议?
bitmapdata ×10
flash ×5
air ×2
bitmap ×1
c# ×1
filestream ×1
filter ×1
hittest ×1
lockbits ×1
performance ×1
profiling ×1
urlloader ×1