Получение измененного растрового изображения из пользовательского ImageView - PullRequest
0 голосов
/ 26 марта 2019

У меня есть представление для редактирования изображений, которое расширяет ImageView.setImageBitmap() вызывается извне на ImageView.Пользователь может рисовать линии в этом представлении, которое будет отображаться поверх растрового изображения, установленного в ImageView.

Моя цель - получить измененное растровое изображение после прорисовки линии, , которое будет использоваться для сравнения пикселей для создания различий с исходным растровым изображением. Вот код для рисования:

public class MyImageView extends ImageView{

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        Paint p = new Paint(Paint.ANTI_ALIAS_FLAG);
        canvas.drawLine(0, 0, 20, 20, p);  //dynamic values in app  
    }   
}

Предложенный подход к другим сообщениям заключается в использовании getDrawingCache(), который возвращает bitmap, возвращая «снимок» ImageView и, следовательно, измененный bitmap.В дополнение к тому факту, что метод устарел сейчас, он не учитывает исходное разрешение растрового изображения, , поэтому я не могу сделать попиксельное сравнение с исходным bitmap.Например, если мое исходное растровое изображение имеет размер 2x4 в ImageView с match_parent шириной и высотой и adjustViewBounds, установленным в значение true, getDrawingCache() возвращает растровое изображение размером 1020x1440.Возможно, я могу масштабировать измененное растровое изображение до размера растрового изображения, но не уверен, потеряю ли я важные данные в зависимости от плотности устройства.

Я также должен добавить важный нюанс.Мой ImageView имеет match_parent ширина / высота с adjustViewBounds true и scaleType как fitCenter, чтобы сохранить соотношение сторон и центрировать изображение соответствующим образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...