Я изменяю размер растрового изображения, используя следующий код:
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);