Как правильно уменьшить картинку.
От: Аноним  
Дата: 28.08.10 13:43
Оценка:
есть код на Java
         Bitmap bm = BitmapFactory.decodeFile(PATH_TO_FILE);
            int width = bm.getWidth();
            int height = bm.getHeight();
            int newWidth = 128;
            int newHeight = 128;
            float scaleWidth = ((float) newWidth) / width;
            float scaleHeight = ((float) newHeight) / height;
         Matrix matrix = new Matrix();
         matrix.postScale(scaleWidth, scaleHeight);
         Bitmap resizedBitmap = Bitmap.createBitmap(bm, 0, 0, width, height, matrix, true);


Подскажите как правильно сделать?
Нужно привести картинку к размеру 128x128.
Но картинка большего размера может быть не пропорциональна. И при приведении к 128x128 она искажается.

Как правильно уменьшить картинку к размеру 128x128 чтобы она не искажалась. Пусть даже получится например 128x100 и так далее.
Важно чтобы попадала в рамки Не более 128x128

Спасибо.
Re: Как правильно уменьшить картинку.
От: wildwind Россия  
Дата: 28.08.10 15:22
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Как правильно уменьшить картинку к размеру 128x128 чтобы она не искажалась. Пусть даже получится например 128x100 и так далее.

А>Важно чтобы попадала в рамки Не более 128x128

Коэффициент масштабирования рассчитать от большей стороны, что тут сложного?
Чтобы не искажалась, нужно scaleWidth == scaleHeight.
Re: Как правильно уменьшить картинку.
От: ExtraLamer  
Дата: 29.08.10 20:23
Оценка:
Здравствуйте, Аноним, Вы писали:

А>есть код на Java

А>
А>         Bitmap bm = BitmapFactory.decodeFile(PATH_TO_FILE);
А>            int width = bm.getWidth();
А>            int height = bm.getHeight();
А>            int newWidth = 128;
А>            int newHeight = 128;
А>            float scaleWidth = ((float) newWidth) / width;
А>            float scaleHeight = ((float) newHeight) / height;
А>         Matrix matrix = new Matrix();
А>         matrix.postScale(scaleWidth, scaleHeight);
А>         Bitmap resizedBitmap = Bitmap.createBitmap(bm, 0, 0, width, height, matrix, true);
А>


А>Подскажите как правильно сделать?

А>Нужно привести картинку к размеру 128x128.
А>Но картинка большего размера может быть не пропорциональна. И при приведении к 128x128 она искажается.

А>Как правильно уменьшить картинку к размеру 128x128 чтобы она не искажалась. Пусть даже получится например 128x100 и так далее.

А>Важно чтобы попадала в рамки Не более 128x128

А>Спасибо.


в инете поищи алгоритмы.

смысл всех их в том что бы анализировать соседние пиксели и устредняя их формировать итоговое изображение.
Re: Как правильно уменьшить картинку.
От: Pavel Dvorkin Россия  
Дата: 30.08.10 09:57
Оценка:
Здравствуйте, Аноним, Вы писали:

А>есть код на Java

А>[java]
А> Bitmap bm = BitmapFactory.decodeFile(PATH_TO_FILE);

Если я правильно понял, то это отсюда

http://developer.android.com/reference/android/graphics/Bitmap.html

и там есть

http://developer.android.com/reference/android/graphics/Bitmap.html#createScaledBitmap(android.graphics.Bitmap, int, int, boolean)

Насчет размеров для сохранения пропорциональности уже сказали.
With best regards
Pavel Dvorkin
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.