* commit 'a1d11945fdfde5c85f4dd18d2ddcecdbf7442da2': Bitmapfun Sample: Fix inSampleSize selection and update dependencies
This commit is contained in:
Binary file not shown.
@@ -196,23 +196,24 @@ public class ImageResizer extends ImageWorker {
|
||||
int inSampleSize = 1;
|
||||
|
||||
if (height > reqHeight || width > reqWidth) {
|
||||
if (width > height) {
|
||||
inSampleSize = Math.round((float) height / (float) reqHeight);
|
||||
} else {
|
||||
inSampleSize = Math.round((float) width / (float) reqWidth);
|
||||
}
|
||||
|
||||
// Calculate ratios of height and width to requested height and width
|
||||
final int heightRatio = Math.round((float) height / (float) reqHeight);
|
||||
final int widthRatio = Math.round((float) width / (float) reqWidth);
|
||||
|
||||
// Choose the smallest ratio as inSampleSize value, this will guarantee a final image
|
||||
// with both dimensions larger than or equal to the requested height and width.
|
||||
inSampleSize = heightRatio < widthRatio ? heightRatio : widthRatio;
|
||||
|
||||
// This offers some additional logic in case the image has a strange
|
||||
// aspect ratio. For example, a panorama may have a much larger
|
||||
// width than height. In these cases the total pixels might still
|
||||
// end up being too large to fit comfortably in memory, so we should
|
||||
// be more aggressive with sample down the image (=larger
|
||||
// inSampleSize).
|
||||
// be more aggressive with sample down the image (=larger inSampleSize).
|
||||
|
||||
final float totalPixels = width * height;
|
||||
|
||||
// Anything more than 2x the requested pixels we'll sample down
|
||||
// further.
|
||||
// Anything more than 2x the requested pixels we'll sample down further
|
||||
final float totalReqPixelsCap = reqWidth * reqHeight * 2;
|
||||
|
||||
while (totalPixels / (inSampleSize * inSampleSize) > totalReqPixelsCap) {
|
||||
|
||||
Reference in New Issue
Block a user