Соответствие между координатами ImageView и растровыми пикселями - Android

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

Чтобы выбрать содержание, я подклассImageView класс, заставляющий его реализоватьOnTouchListener поэтому нарисовать над ним прямоугольник с границами, выбранными пользователем.

Вот пример результата рисунка (чтобы иметь представление о том, как он работает, вы можете думать о нем, как когда вы щелкаете мышью на рабочем столе и перетаскиваете мышь):

enter image description here

Теперь мне нужно определить, какиеpixels изBitmap изображение соответствует выбранной части. Это довольно легко определить, какие точкиImageView принадлежащие прямоугольнику, но я не знаю, как получить соответствующие пиксели, так какImageView имеет другое соотношение сторон, чем исходное изображение.

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

призваниеhoveredRect прямоугольник наImageView точки внутри него:

class Point {
    float x, y;
    @Override
    public String toString() {
        return x + ", " + y;
    }
}

Vector<Point> pointsInRect = new Vector<Point>();

for( int x = hoveredRect.left; x <= hoveredRect.right; x++ ){
    for( int y = hoveredRect.top; y <= hoveredRect.bottom; y++ ){

        Point pointInRect = new Point();
        pointInRect.x = x;
        pointInRect.y = y;
        pointsInRect.add(pointInRect);
    }   
}

Как я могу получитьVector<Pixels> pixelsInImage содержащие соответствующие пикселиBitmap образ?

ADDED EXPLANATIONS

Я немного лучше объясню контекст моей проблемы:

I need to do some image processing on the selected part, and want to be sure that all the pixels in the rectangle get processed.

The image processing will be done on a server but it needs to know exactly which pixels to process. Server works with image with real dimensions, android app just tells which pixels to process to the server by passing a vector containing the pixel coordinates

И почему мне не нравятся решения, предложенные по ссылкам выше:

The answers given transform coordinates with a 1 to 1 fashion. This approach clearly is not valid for my task, since an area of say 50 points in the ImageView of a certain size on the screen cannot correspond to an area of the same number of pixels in the real image, but should consider the different aspect ratio.

Например, это область, которая должна быть выбрана, если изображение меньше, чемImageView показано в приложении:

enter image description here

Ответы на вопрос(3)

Ваш ответ на вопрос