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

я получаю растровое изображение из галереи/камеры и пытаюсь вписаться в изображение размером 200 dp * 200 dp

Мне пришлось масштабировать растровое изображение, чтобы избавиться от проблем с памятью. Теперь после масштабирования изображение не совсем соответствует изображению.

Ширина в порядке, но высота только половина. Есть ли способ сделать растровое изображение подходящим для изображения без изменения размера изображения и без растягивания изображения.

fitxy подойдет, но изображение растянуто. я следовал этому ответу


person png    schedule 14.05.2014    source источник
comment
попробуйте установить scaleType как centercrop.   -  person amit singh    schedule 14.05.2014
comment
установка фиксированной ширины и высоты изображения всегда будет влиять на соотношение сторон. Вы можете установить либо ширину, либо высоту, чтобы сохранить соотношение сторон.   -  person Spring Breaker    schedule 14.05.2014


Ответы (2)


Я думаю, вам нужно создать новое растровое изображение, чтобы оно соответствовало размерам ImageView, и вам нужно создать новое растровое изображение пропорционально, как бы оно ни было, ширина должна быть в том же соотношении с высотой, а затем вам нужно установить это растровое изображение там. Другой способ дать,

android:adjustViewBounds="true"

Он автоматически масштабирует изображение пропорционально.

person Pratik Dasa    schedule 14.05.2014
comment
Вы создали новый btmap или нет? - person Pratik Dasa; 15.05.2014

Если вы ищете решение с использованием xml, я создал селектор и присвоил ему свой фон imageView:

android:background="@drawable/image_selector"

В моем селекторе я настраиваю элемент растрового изображения и устанавливаю его гравитацию на "fill":

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

   <item>
       <bitmap android:gravity="fill"
               android:src="@drawable/kitchen_background"/>
   </item>


</selector>
person JFreeman    schedule 15.06.2021