标签: bitmapdata

URLLoader数据到BitmapData

我正在尝试加载.SWF文件旁边的图像文件.像这样的东西:

var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.BINARY;
loader.addEventListener(Event.COMPLETE, function(e:Event):void {
    trace(typeof(loader.data));
    graphic = spritemap = new Spritemap(loader.data, 32, 32);
    ...
}
Run Code Online (Sandbox Code Playgroud)

但这是我得到的输出:

object
[Fault] exception, information=Error: Invalid source image.
Run Code Online (Sandbox Code Playgroud)

事情是loader.data有图像的字节但不是BitmapData实例,这就是Spritemap所期望的.

如何转换为BitmapData?

谢谢

urlloader actionscript-3 bitmapdata

5
推荐指数
1
解决办法
2万
查看次数

AS3/AIR/Mobile - 将位图保存到文件

我认真地到处寻找,但找不到解决方案.我的应用程序可以轻松地将UTF字节作为XML文件保存在iOS和Android的允许缓存位置中.

但我无法弄清楚如何将Bitmap/BitmapData保存到同一缓存文件夹中的文件.创建文件很好....

_fs.open(_f, FileMode.WRITE);

//What goes in here to save the Bitmap?

_fs.close();
Run Code Online (Sandbox Code Playgroud)

任何有关这方面的帮助将不胜感激.

谢谢

更新:代码如下......

        _smallLogo = Bitmap(_loader.content);
        //this.addChild(_smallLogo);

        var jpg:JPGEncoder = new JPGEncoder(100);
        var bd:BitmapData = new BitmapData(_smallLogo.width, _smallLogo.height);
        bd.draw(_smallLogo);
        var ba:ByteArray  = jpg.encode(bd);

        //3
        _fs.open(_f, FileMode.WRITE);
        _fs.writeBytes( ba, 0, ba.length );         
        _fs.close();
Run Code Online (Sandbox Code Playgroud)

更新 - 答案

//SAVE
_smallLogo = Bitmap(_loader.content);           
var jpg:JPGEncoder = new JPGEncoder(100);
var ba:ByteArray  = jpg.encode(_smallLogo.bitmapData);

_fs.open(_f, FileMode.WRITE);
_fs.writeBytes( ba, 0, ba.length );         
_fs.close();
Run Code Online (Sandbox Code Playgroud)
//OPEN
private function getLogo():void {
    var ba:ByteArray = new ByteArray();

    _fs.open(_f, …
Run Code Online (Sandbox Code Playgroud)

image bitmap actionscript-3 bitmapdata

5
推荐指数
1
解决办法
6384
查看次数

尝试使用BitmapData捕获舞台区域

我试图使用BitmapData和copyPixels方法获取部分舞台区域:

bmd = new BitmapData(stage.stageWidth, stage.stageHeight);

bmdRect = new BitmapData(320, 240);

rectangle = new Rectangle(360, 20, 320, 240); 

bmdRect.copyPixels(bmd, rectangle, new Point());

bmd.draw(bmp);
bmp = new Bitmap(bmdRect);   

var myEncoder:JPGEncoder = new JPGEncoder(100);
var byteArray:ByteArray = myEncoder.encode(bmd);
Run Code Online (Sandbox Code Playgroud)

我得到的结果是一个空的.jpg我很确定错误是在位图程序而不是保存的...

actionscript-3 bitmapdata

4
推荐指数
1
解决办法
1万
查看次数

c#scan0和stride

任何人都知道什么是Scan0和Stride?我需要一个很好的解释谢谢.

c# bitmap bitmapdata

4
推荐指数
1
解决办法
4356
查看次数

理解Go标准库中的一些魔力

所以我一直在筛选Go标准库中的一些代码,试图理解他们的图像和颜色包,但发现了一些我无法理解的代码.来自http://golang.org/src/pkg/image/color/color.go?s=794:834#L14

根据我的理解,它应该将8位预先alpha乘法的RGB值转换为16位的值,保存在32位变量中,以防止它们在图像关节成像中相乘时溢出.

我无法理解的是像r |= r << 8我理解的线条这相当于r = r*2^8+r因为r << 8在右边插入零并且它们与旧的r相关.

对于r = 255的输入,这评估为65535 = 2 ^ 16 - 1这是预期的,但对于中间的值没有意义,这些值实际上没有映射到更大范围内的比例.例如,127 get被映射到32639,而我期望32767代表127.我错过了什么?我认为它与pre-alpha-multiplication有关...

 func (c RGBA) RGBA() (r, g, b, a uint32) {
    r = uint32(c.R)
    r |= r << 8
    g = uint32(c.G)
    g |= g << 8
    b = uint32(c.B)
    b |= b << 8
    a = uint32(c.A)
    a |= a << 8
    return
}
Run Code Online (Sandbox Code Playgroud)

bit-manipulation colors go bitmapdata rgba

4
推荐指数
1
解决办法
256
查看次数

在AS3 180deg中旋转位图数据以进行导出

我在AS3闪存中有一个位图,我使用base64编码的jpg字符串将其发送到javascript.

一切都很好.我需要将img发送到缩小版,然后旋转180度.缩放工作,但不是旋转.轮换永远不会.我知道我显然做错了,但不知道正确的方法.

所以基本上我只需要旋转图像180deg,所以当它被发送到javascript它是颠倒的.

这是我的转换代码

var scaleFactor:int = 5;

var tempBitmap:BitmapData = new BitmapData(img.width/scaleFactor, img.height/scaleFactor);
var drawMatrix:Matrix = new Matrix(1/scaleFactor, 0, 0, 1 /scaleFactor );
drawMatrix.rotate(Math.PI); //180deg

tempBitmap.draw(img, drawMatrix);
Run Code Online (Sandbox Code Playgroud)

flash bitmap matrix actionscript-3 bitmapdata

4
推荐指数
1
解决办法
4988
查看次数

BitmapData.draw clipRect未按预期工作

我有一个包含4层的组件:(按升序排列)bgImage:Sprite,dropZone:Sprite,dropMask:Sprite和line:Sprite.bgImage为0,0,其他对象放置在各种正坐标处.dropMask正在屏蔽dropZone.

在位图捕获点我想只从dropZone和dropMask层绘制,所以我在尝试这个:

removeChild(bgImage);
removeChild(line);
var bmd:BitmapData = new BitmapData(dropMask.width,dropMask.height,true,0);
bmd.draw(this,null,null,null,dropMask.getBounds(this));
Run Code Online (Sandbox Code Playgroud)

尽管dropMask位于50,60,但捕获总是从0,0开始.我也试过获得边界矩形并强制x,y,但它没有区别.我在这里做错了什么,我应该忘记clipRect并使用矩阵代替吗?

flash actionscript-3 bitmapdata

3
推荐指数
1
解决办法
5334
查看次数

AS3如何检查BitmapData是否为空

我有一个代码来擦除蒙面动画片段.(在这里学分)我想知道如何检查整个动画片段是否已被删除.所以我认为我必须检查BitmapData是否为空,但我可能非常错!如何检查动画片段的每个像素是否已被删除?
当然我的下面的例子是错误的,但我认为它必须是这样的.

if (erasableBitmapData = empty)
    { 
    trace("empty")
    }
Run Code Online (Sandbox Code Playgroud)
    var lineSize:Number=40;
    var doDraw:Boolean=false;
    var resumeDrawing:Boolean=false;

    var erasableBitmapData:BitmapData = new BitmapData(700, 500, true, 0xFFFFFFFF);
    var erasableBitmap:Bitmap = new Bitmap(erasableBitmapData);
    erasableBitmap.cacheAsBitmap = true;
    addChild(erasableBitmap);

    maskee.cacheAsBitmap = true;
    maskee.mask = erasableBitmap;

    var eraserClip:Sprite = new Sprite();
    initEraser();
    function initEraser():void {
        eraserClip.graphics.lineStyle(lineSize,0xff0000);
        eraserClip.graphics.moveTo(stage.mouseX,stage.mouseY);
    }

    var drawnBitmapData:BitmapData = new BitmapData(700, 500, true, 0x00000000);
    var drawnBitmap:Bitmap = new Bitmap(drawnBitmapData);

    stage.addEventListener(MouseEvent.MOUSE_MOVE,maskMove);
    stage.addEventListener(MouseEvent.ROLL_OUT, maskOut); 
    stage.addEventListener(MouseEvent.ROLL_OVER,maskOver);
    stage.addEventListener(MouseEvent.MOUSE_DOWN,startDrawing);
    stage.addEventListener(MouseEvent.MOUSE_UP,stopDrawing);

    function startDrawing(e:MouseEvent):void {
        eraserClip.graphics.moveTo(stage.mouseX,stage.mouseY);
        doDraw=true;
    }

    function stopDrawing(e:MouseEvent):void { …
Run Code Online (Sandbox Code Playgroud)

flash actionscript-3 erase bitmapdata

3
推荐指数
1
解决办法
3489
查看次数

AS3-从1个BitmapData对象(加载的PNG)复制透明度并应用于另一个?

我有一个涉及加载透明png的问题.我想要做的是从加载的png复制alpha通道,然后将此alpha通道应用于另一个Bitmapdata对象.

谁能建议我怎么做?

flash bitmap actionscript-3 bitmapdata

3
推荐指数
1
解决办法
3149
查看次数

AS3使用Mask从Movieclip获取Bitmap

这有效:

var a:BitmapData = new BitmapData(640,480);
var b:Bitmap = new Bitmap(a);
a.draw(movieClip);
Run Code Online (Sandbox Code Playgroud)

这不起作用:

movieClip.mask = movieClipMask;
var a:BitmapData = new BitmapData(640,480);
var b:Bitmap = new Bitmap(a);
a.draw(movieClip);
Run Code Online (Sandbox Code Playgroud)

如何只将MovieClip的可见部分(使用遮罩)绘制到我的位图中?

flash bitmap actionscript-3 movieclip bitmapdata

3
推荐指数
1
解决办法
5115
查看次数