所有。
有这样的代码:
public void onPreviewFrame(byte[] data,Camera camera){
try{
YuvImage yuvimage=new YuvImage(data,ImageFormat.NV21,this.width,this.height,null);
System.out.println("WidthandHeight"+yuvimage.getHeight()+"::"+yuvimage.getWidth());
ByteArrayOutputStream baos=new ByteArrayOutputStream();
yuvimage.compressToJpeg(new Rect(0,0,this.width,this.height),100,baos);
}catch(Exception e){
Log.d("parse","errpr");
}
}
它从相机获取图像并将其转换为jpg图像。
但这是问题所在:
即使图像质量缩小到20%,图像的重量也约为2 kb(2000字节)。
据我了解,图像的重量包括:
宽度*长度* 3(3-3个通道。R,G,B)。
实际上,如果将图像设为黑白,则公式将为:
宽度*长度* 1(一个通道)
也就是说,图像尺寸减小了3倍!
我试图这样做。
但检查后,结果发现图像变黑了,但大小照原样保留了大约2 kb。
代码(从RGB到灰度): 公共位图到灰度(位图bmp原始) { int宽度,高度; 高度= bmpOriginal.getHeight(); 宽度= bmpOriginal.getWidth();
Bitmap bmpGrayscale = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(bmpGrayscale);
Paint paint = new Paint();
ColorMatrix cm = new ColorMatrix();
cm.setSaturation(0);
ColorMatrixColorFilter f = new ColorMatrixColorFilter(cm);
paint.setColorFilter(f);
c.drawBitmap(bmpOriginal, 0, 0, paint);
return bmpGrayscale;
}
可能出什么问题了?这样可以减轻图像的重量吗?