- 典型的错误代码
BitmapFactory.Options options = new BitmapFactory.Options();
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.STROKE);
Bitmap bitmap = BitmapFactory.decodeByteArray(nv21, 0, nv21.length, options);
if (bitmap != null) {
m_canvas.drawBitmap(bitmap, m_srcRect, m_dstRect, paint);
}
- NV21转RGB的办法
https://blog.csdn.net/quantum7/article/details/105720150
- 查表法
吾亦用了几套查表法,结果是颜色不对,而且性能比上述更慢。最后把这些代码全部删除。
- JPEG中转
YuvImage yuvimage = new YuvImage(
data,
ImageFormat.NV21,
mPreviewSize.width,
mPreviewSize.height,
null);
mBaos = new ByteArrayOutputStream();
yuvimage.compressToJpeg(new Rect(0, 0, mPreviewSize.width, mPreviewSize.height), 100, mBaos);
mImageBytes = mBaos.toByteArray();
//将mImageBytes转换成bitmap
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.RGB_565;
mBitmap = BitmapFactory.decodeByteArray(mImageBytes, 0, mImageBytes.length, options);
icon.setImageBitmap(mBitmap);