我使用以下代码调整位图的大小:
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);