Изменить размер растрового изображения в Android - PullRequest
7 голосов
/ 13 мая 2011

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

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 ]

4 голосов
/ 16 мая 2011

1) Попробуйте изменить параметр фильтра с «ложь» на «истина» при вызове createScaledBitmap ().Держу пари, что это решит вашу проблему.

Вам следует прочитать эту статью: http://www.curious -creature.org / 2010/12/08 / bitmap-quality-banding-and-dithering /

2 голосов
/ 13 мая 2011

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

приписка

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

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

...