Обрезать растровое изображение с использованием параметров RectF на Android

Используя потрясающую реализацию ImageView от MikeOrtiz с событиями касания и масштабирования, я хотел обрезать снимок, сделанный камерой, чтобы он соответствовал зум. Используя его метод...

// Return a Rect representing the zoomed image.
RectF getZoomedRect();

... Я попытался обрезать полученное растровое изображение до размера масштабирования следующим образом:

RectF zoomCoordinates = mTouchImageView.getZoomedRect();

Bitmap croppedBitmapToOverview = Bitmap.createBitmap(
                AppResources.sCurrentImage,
                ((int) zoomCoordinates.left),
                ((int) zoomCoordinates.top),
                ((int) zoomCoordinates.width()),
                ((int) zoomCoordinates.height()));

Однако при этом я получаю сообщение об ошибке «должно быть больше 0». Во время отладки я заметил, что ВСЕ значения равны 0 из-за приведения к целому числу. Однако реальные значения выглядят примерно так:

//Log.d print for each of those fields without the int cast
Left 0.34047672
Top 0.20797288
Width 0.33333334
Height 0.3429547

Итак, есть моя проблема, но я не вижу, как это исправить. Я никогда раньше не работал с растровыми изображениями или холстом, Rect и т. д.

Могу ли я изменить эти значения, или мне следует использовать другой подход?


person Deegriz    schedule 20.05.2015    source источник


Ответы (2)


Обошел проблему, просто сделав «скриншот» своего рода View. Это дало мне растровое изображение с увеличенным изображением.

mTouchImageView.setDrawingCacheEnabled(true);
        AppResources.sCurrentImage = Bitmap.createBitmap(mTouchImageView.getDrawingCache());
person Deegriz    schedule 22.05.2015

умножьте координаты на размер вашего изображения, например

(int)(zoomCoordinates.left * imageSize)
person udhay kumar    schedule 24.01.2020