Merge "Fix 5509346: Resize the thumbnails if it's too large." into ics-mr1

This commit is contained in:
Chih-Chung Chang
2011-11-07 22:59:55 -08:00
committed by Android (Google) Code Review

View File

@@ -154,7 +154,7 @@ public class MediaImageItem extends MediaItem {
final Bitmap imageBitmap;
if (mHeight > maxResolution.second) {
if (mWidth > maxResolution.first || mHeight > maxResolution.second) {
/**
* We need to scale the image
*/
@@ -971,14 +971,13 @@ public class MediaImageItem extends MediaItem {
/**
* Create the bitmap from file
*/
if (nativeWidth / bitmapWidth > 1) {
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = nativeWidth / (int)bitmapWidth;
srcBitmap = BitmapFactory.decodeFile(filename, options);
} else {
srcBitmap = BitmapFactory.decodeFile(filename);
}
int sampleSize = (int) Math.ceil(Math.max(
(float) nativeWidth / bitmapWidth,
(float) nativeHeight / bitmapHeight));
sampleSize = nextPowerOf2(sampleSize);
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = sampleSize;
srcBitmap = BitmapFactory.decodeFile(filename, options);
} else {
bitmapWidth = width;
bitmapHeight = height;
@@ -1009,4 +1008,14 @@ public class MediaImageItem extends MediaItem {
srcBitmap.recycle();
return bitmap;
}
public static int nextPowerOf2(int n) {
n -= 1;
n |= n >>> 16;
n |= n >>> 8;
n |= n >>> 4;
n |= n >>> 2;
n |= n >>> 1;
return n + 1;
}
}