Bitmapdata,从actionscript 到 android

因为安卓跟as3用的channel顺序不同,as3是BGRA ,安卓是RGBA,所以直接将图片传到android会出现色差(非常大的),所以需要转换一下。

代码部分基于Stackoverflow的一个问题的回答,直接拿来用。

final float[] m_bgrToRgbColorTransform  =
		    {
		        0,  0,  1f, 0,  0, 
		        0,  1f, 0,  0,  0,
		        1f, 0,  0,  0,  0, 
		        0,  0,  0,  1f, 0
		    };

完整的代码,将FREBitmapData转换成Bitmap


public static Bitmap getBitmapFromFreBitmapdata(final FREBitmapData as3Bitmap){
		//http://stackoverflow.com/questions/17314467/bitmap-channels-order-different-in-android
		Bitmap m_encodingBitmap         = null;
		Canvas m_canvas                 = null;
		Paint m_paint                   = null;    
		final float[] m_bgrToRgbColorTransform  =
		    {
		        0,  0,  1f, 0,  0, 
		        0,  1f, 0,  0,  0,
		        1f, 0,  0,  0,  0, 
		        0,  0,  0,  1f, 0
		    };
		final ColorMatrix               m_colorMatrix               = new ColorMatrix(m_bgrToRgbColorTransform);
		final ColorMatrixColorFilter    m_colorFilter               = new ColorMatrixColorFilter(m_colorMatrix);
		try{
			as3Bitmap.acquire();
			int srcWidth = as3Bitmap.getWidth();
		    int srcHeight = as3Bitmap.getHeight();
			m_encodingBitmap    = Bitmap.createBitmap(srcWidth, srcHeight, Bitmap.Config.ARGB_8888);
			m_canvas        = new Canvas(m_encodingBitmap);
			m_paint         = new Paint();
			m_paint.setColorFilter(m_colorFilter);
			
			m_encodingBitmap.copyPixelsFromBuffer(as3Bitmap.getBits());
			as3Bitmap.release();
		}catch (Exception e) {
		    e.printStackTrace();
		    Log.d("getBitmapFromFreBitmapdata", "fail to conver image to bitmap");
		}
		//
		// Convert the bitmap from BGRA to RGBA.
		//
		m_canvas.drawBitmap(m_encodingBitmap, 0, 0, m_paint);
		return m_encodingBitmap;
	}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值