在Android中调整位图大小

时间:2011-05-13 16:33:05

标签: android bitmap camera

我使用以下代码调整位图大小:

FileOutputStream out = new FileOutputStream("/sdcard/mods.png");
Bitmap bmp = Bitmap.createScaledBitmap(pict, (int)(pict.getWidth() / totScale),  
    (int)(pict.getHeight() / totScale), false);
bmp.compress(Bitmap.CompressFormat.PNG, 90, out);
out.close();

从我正在使用的相机获取位图的代码如下:

mCamera.takePicture(null, null, null, new Camera.PictureCallback() {
        @Override
        public void onPictureTaken(byte[] data, Camera camera) {
            pict = BitmapFactory.decodeByteArray(data, 0, data.length);
        }
});

第一张照片是我在手机上看到的(在Astro文件管理器中),也是我在画布上绘制应用程序中的位图的时候。这种情况发生在我测试过的每台设备上(HTC Legend和Galaxy Tab)第二张图片就是我电脑上的样子。是什么导致设备上的块?


解决方案:

这是解决我的问题的原因: 而不是

pict = BitmapFactory.decodeByteArray(data, 0, data.length);

我用

替换了它
BitmapFactory.Options opts = new BitmapFactory.Options();               
opts.inPreferredConfig = Bitmap.Config.ARGB_8888;
pict = BitmapFactory.decodeByteArray(data, 0, data.length, opts);


Phone Computer

2 个答案:

答案 0 :(得分:4)

1)尝试在调用createScaledBitmap()时将filter参数从“false”更改为“true”。我打赌这会解决你的问题。

您应该阅读这篇文章:http://www.curious-creature.org/2010/12/08/bitmap-quality-banding-and-dithering/

答案 1 :(得分:2)

第一张和第二张图片是相同的。

P.S。

bmp.compress(Bitmap.CompressFormat.PNG, 90, out);

您无法压缩PNG格式,只能压缩JPEG。