我在 SD 卡上有 3 张图片(1 张 jpg 和 2 张 gif)。我想减少它们以节省内存。调整大小后 JPG 调整大小成功,但 GIF 图像具有原始大小。查看代码和日志:
public class BitmapHelper
{
private static int calculateInSampleSize(BitmapFactory.Options options, int imgHeigth, int imgWidth)
{
int inSampleSize = 1;
if(imgHeigth > 80 || imgWidth > 120)
{
final int heightRatio = Math.round((float) imgHeigth / 80);
final int widthRatio = Math.round((float) imgWidth / 120);
if(heightRatio < widthRatio)
return heightRatio;
if(heightRatio > widthRatio)
return widthRatio;
if(heightRatio == widthRatio)
return heightRatio;
}
return inSampleSize;
}
public Bitmap decodeBitmapFromFile(String imageUrl, Resources res)
{
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(imageUrl, options);
if(options.outMimeType != null)
{
options.inSampleSize = calculateInSampleSize(options, options.outHeight, options.outWidth);
options.inJustDecodeBounds = false;
Bitmap bmp = BitmapFactory.decodeFile(imageUrl, options);
Log.d("Debugger", "Height: " + options.outHeight + "; Width: " + options.outWidth);
return bmp;
}
else
{
options.inSampleSize = 2;
options.inJustDecodeBounds = false;
return BitmapFactory.decodeResource(res, R.drawable.play, options);
}
}
}
日志:
Height: 97; Width: 175
Height: 324; Width: 550
Height: 97; Width: 175
Height: 226; Width: 400
Height: 97; Width: 175
Height: 324; Width: 550
Height: 226; Width: 400
97x175 - JPEG - (Original size: 388x698)
324x550 - GIF - original size
226x400 - GIF - original size
怎么了?非常感谢。