Изрежете Bitmap с помощта на 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

И така, това е моят проблем, но не виждам как да го поправя. Никога преди не съм работил с растерни изображения или canvas, Rect и т.н.

Има ли някаква промяна, която мога да направя на тези стойности, или трябва да използвам различен подход?


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


Отговори (2)


Преодолях проблема, като просто направих "екранна снимка" на изгледа. Това ми даде растерно изображение с картината, тъй като беше увеличена

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