Korespondencja między współrzędnymi ImageView a pikselami bitmapowymi - Android

W mojej aplikacji chcę, aby użytkownik mógł wybrać jakąś treść obrazu zawartą w środkuImageView.

Aby wybrać treść, którą podklasowałemImageView klasa sprawia, że ​​implementujeOnTouchListener aby narysować nad nim prostokąt z granicami ustalonymi przez użytkownika.

Oto przykład wyniku rysunku (aby dowiedzieć się, jak to działa, możesz pomyśleć o tym, jak po kliknięciu myszką na pulpicie i przeciągnięciu myszy):

Teraz muszę określić, którepikseli zBitmap obraz odpowiada wybranej części. Łatwo jest określić, które są punktyImageView należący do prostokąta, ale nie wiem, jak uzyskać odpowiednie piksele, ponieważImageView ma inny współczynnik proporcji niż oryginalny obraz.

Podążyłem za opisanym podejściemszczególnie tutaj, ale także tutaj, ale nie jestem w pełni usatysfakcjonowany, ponieważ moim zdaniem korespondencja jest 1 na 1 między pikselami a punktami naImageView i nie daje mi wszystkich odpowiadających pikseli na oryginalnym obrazie do wybranego obszaru.

PowołaniehoveredRect prostokąt naImageView punkty wewnątrz to:

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);
    }   
}

Jak mogę uzyskaćVector<Pixels> pixelsInImage zawierające odpowiednie pikseleBitmap obraz?

DODANE WYJAŚNIENIA

Wyjaśnię trochę lepiej kontekst mojego problemu:

Muszę wykonać przetwarzanie obrazu w wybranej części i mieć pewność, że wszystkie piksele w prostokącie zostaną przetworzone.

Przetwarzanie obrazu będzie wykonywane na serwerze, ale musi dokładnie wiedzieć, które piksele przetwarzać. Serwer działa z obrazem o rzeczywistych wymiarach, aplikacja Android po prostu informuje, które piksele mają zostać przetworzone na serwer, przekazując wektor zawierający współrzędne pikseli

I dlaczego nie lubię rozwiązań proponowanych w powyższych linkach:

Odpowiedzi, które otrzymały, przekształcają współrzędne w sposób od 1 do 1. Podejście to nie jest oczywiste dla mojego zadania, ponieważ obszar powiedzmy 50 punktówImageView określonego rozmiaru na ekranie nie może odpowiadać obszarowi o tej samej liczbie pikseli w rzeczywistym obrazie, ale należy wziąć pod uwagę inny współczynnik proporcji.

Jako przykład jest to obszar, który powinien zostać wybrany, jeśli obraz jest mniejszy niżImageView wyświetlane w aplikacji:

questionAnswers(3)

yourAnswerToTheQuestion