2012-01-29 1 views
0

Привет, великие люди из stackoverflow.com, я столкнулся с большими трудностями в своем коде; что невозможно изменить размеры моих изображений в соответствии с размером экрана.Как изменить масштаб растрового изображения на разные размеры экрана, но сохранить его в квадрате?

У меня есть изображение SAY 65 пикселей на 65 пикселей, но я хочу, чтобы это изображение было определенным процентом экрана, говорят 6% при сохранении квадрата.

Мой мозг не может обрабатывать математику для этого (потому что медленно :-()

(_width & _height ширина экрана и высота)

То, что я получил до сих пор:

int width = bitmap.getWidth(); 
int height = bitmap.getHeight(); 

int avg_screen_dimension = (_width + _height)/2; 

float scaleWidth = 
    ((float) width + (avg_screen_dimension - _width))/width; 
float scaleHeight = 
    ((float) height + (avg_screen_dimension - _height))/height; 

// CREATE A MATRIX FOR THE MANIPULATION 
Matrix matrix = new Matrix(); 

// RESIZE THE BIT MAP 
matrix.postScale(scaleWidth, scaleHeight); 

// RECREATE THE NEW BITMAP 

Bitmap resizedBitmap = 
    Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, false); 

return resizedBitmap; 

Любая помощь будет принята с благодарностью

+1

I 'немного смущен правилами, которые вы хотите применить, но если вы хотите сохранить квадрат изображения, тогда вам нужно 'float scaleWidth = ... * width' и' float scaleHeight = ... * height' для того же значение '...'. Я бы порекомендовал, если возможно, что вы * запустили *, вычислив «float scale = ...», а затем просто напишите «float scaleWidth = scale * width» и 'float scaleHeight = масштаб * высота'. Этот гуара чтобы соотношение сторон сохранялось. – ruakh

+2

Можете ли вы не просто умножить его на процент ..? Если вы хотите, чтобы квадрат 100x100 составлял 10%, это не просто: width = 0.10 * 100, height = 0.10 * 100 –

ответ

2

Это немного больше, чем простой алгебры -. не требуется никакого комплекса по математике

Вам придется выбирать между долей ширины или высоты экрана, если они не равны.

Пусть h = высота экрана, w = ширина экрана, f = доля размера экрана, x = размер изображения.

Тогда x = h * f. Если вы хотите сделать его частью ширины, замените w на h.

0

(Подобно тому, как в сторону - в вашем вставленного кода, вы перепутали имена переменных: вы объявите их как высоты и ширина, но передать их в качестве _width и _height

+0

Я забыл упомянуть, _width и _height - это ширина и высота устройства. –

Смежные вопросы