急求 安卓RGBA_8888圖像數據顯示到ImageView
轉換已生成的Bitmap(SDK):
/**
* 初始化顏色過濾畫筆
*/
void initFilterPaint() {
Paint paint= new Paint();
float[] src = {
0, 0, 0, 1, 0, //R' = 0*R + 0*G + 0*B + 1*A + 0;
1, 0, 0, 0, 0, //G' = 1*R + 0*G + 0*B + 0*A + 0;
0, 1, 0, 0, 0, //B' = 0*R + 1*G + 0*B + 0*A + 0;
0, 0, 1, 0, 0 };//A' = 0*R + 0*G + 1*B + 0*A + 0;
ColorFilter filter = new ColorMatrixColorFilter(new ColorMatrix(src));
paint.setColorFilter(filter);
this.mFilterPaint = paint;
}
/**
* @param iv 要呈現的ImageView
* @param src 像素壹維數組 0xrrggbbaa 格式參考Bitmap.setPixels方法
* @param width 圖片寬
* @param height 圖片高
*/
void filterArrayAndShow(ImageView iv,int[] src,int width,int height) {
final Paint filterPaint = mFilterPaint;
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
// long uptimeMillis = SystemClock.uptimeMillis();
Canvas bitmapCanvas = new Canvas(bitmap);
bitmapCanvas.drawBitmap(src, 0, width, 0, 0, width, height, true, filterPaint);
iv.setImageBitmap(bitmap);
// System.out.println(SystemClock.uptimeMillis() - uptimeMillis);
}
/**
* @param iv 要呈現的ImageView
* @param src pixel為0xrrggbbaa的Bitmap
*/
void filterAndShow(ImageView iv, Bitmap src) {
final Paint filterPaint = mFilterPaint;
Bitmap bitmap = Bitmap.createBitmap(src.getWidth(), src.getHeight(), src.getConfig());
// long uptimeMillis = SystemClock.uptimeMillis();
Canvas bitmapCanvas = new Canvas(bitmap);
bitmapCanvas.drawBitmap(src, 0, 0, filterPaint);
iv.setImageBitmap(bitmap);
// System.out.println(SystemClock.uptimeMillis() - uptimeMillis);
}