Използвайки страхотната реализация на 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 и т.н.
Има ли някаква промяна, която мога да направя на тези стойности, или трябва да използвам различен подход?