2012-06-26 3 views
2

Обычно я загружаю изображения большего размера и сжимаю их с помощью изображения, но в последнее время я пытаюсь разобраться с тем, что мои приложения не работают с меньшим сетевым подключением, поэтому мне было интересно, как увеличить размер изображения, когда он попадает на устройство. Я попытался изменить размер изображения, когда он был в изображении, но изображение не будет больше исходного изображения. Я уверен, что это действительно простой способ увеличить или взорвать изображение на устройстве, но я еще не нашел его.Android - Как увеличить растровое изображение

Итак, как я могу увеличить размер изображения. Id нравится взорвать его и использовать его в изображении, но изображения Im, имеющие дело только с 128X256, и Id любят расширять их примерно до 512X1024.

+1

вы пытались с помощью 'андроида: scaleType = "fitXY"'? – thepoosh

+0

Я думаю, что я пытался использовать различные типы шкал, но они, похоже, не работали для моей конкретной необходимости, если я просто не использовал их правильно –

+0

ну, 'fitXY' означает, что изображение будет масштабироваться в соответствии с границами вида, в котором он находится, так что это тип шкалы для вас – thepoosh

ответ

5

Попробуйте использовать этот метод:

public static Bitmap scaleBitmap(Bitmap bitmapToScale, float newWidth, float newHeight) { 
if(bitmapToScale == null) 
    return null; 
//get the original width and height 
int width = bitmapToScale.getWidth(); 
int height = bitmapToScale.getHeight(); 
// create a matrix for the manipulation 
Matrix matrix = new Matrix(); 

// resize the bit map 
matrix.postScale(newWidth/width, newHeight/height); 

// recreate the new Bitmap and set it back 
return Bitmap.createBitmap(bitmapToScale, 0, 0, bitmapToScale.getWidth(), bitmapToScale.getHeight(), matrix, true); } 

см мой ответ на: ImageView OutofMemoryException

+0

Спасибо за этот метод, я думал, что это будет что-то простое, но после программирования весь день мой мозг кончился. У меня только один вопрос о вашем методе ..... почему в вашем обращении к matrix.postScale() вы делите новые измерения на старые? Не может ли заставить матрицу вернуть значение, которое было намного меньше моей цели расширения изображения? –

0

Если вы хотите масштабировать Bitmap вручную, есть Bitmap.createScaledBitmap() метод, который вы можете использовать для этого.
Если вы хотите, чтобы ImageView обрабатывал это, вы должны установить layout_width/layout_height на что-то другое, кроме wrap_content, или оно всегда будет уменьшаться до размера растрового изображения. Затем вам необходимо изменить атрибут scaleType на тип, который фактически масштабирует растровое изображение.

+1

Я попытался использовать это, но, пытаясь использовать этот метод для расширения или увеличения размера изображения, я сделал ошибку для меня. Это было чем-то вроде того, что он не мог масштабироваться больше, чем исходное изображение. –

2

Используйте матрицу для изменения размера растрового изображения.

Проверить этот Resize Bitmap

0

функциональные возможности для масштабирования изображений вверх или вниз легко доступен через android.graphics библиотеки:

Bitmap bitmapScaled = Bitmap.createScaledBitmap(Bitmap bitmapOrig, int widthNew, int heightNew, boolean filter); 
Смежные вопросы