Изменение размера растрового изображения в Android

Я изменяю размер растрового изображения, используя следующий код:

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);


PhoneComputer

Ответ 2

Первая и вторая фотографии одинаковы.

P.S.

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

Вы не можете сжать формат PNG, только JPEG.