public static Bitmap LoadBitmapSampleEx2(File file, int MaxWidth, int MaxHeight) throws IOException
{
if (MaxWidth == 0 || MaxHeight == 0)
{
return null;
}
FileInputStream inputStream;
inputStream = new FileInputStream(file);
BitmapFactory.Options o = new BitmapFactory.Options();
o.inJustDecodeBounds = true;
BitmapFactory.decodeStream(inputStream, null, o);
inputStream.close();
inputStream = null;
double r1 =Math.ceil((float)o.outWidth / (float)MaxWidth);
r1 = Math.max(r1, Math.ceil((float)o.outHeight / (float)MaxHeight));
BitmapFactory.Options o2 = null;
if (r1 > 1.0F)
{
o2 = new BitmapFactory.Options();
o2.inSampleSize = (int) r1;
}
Bitmap bmp = null;
boolean oomFlag = false;
int retries = 0;
do
{
try
{
inputStream = new FileInputStream(file);
bmp = BitmapFactory.decodeStream(inputStream, null, o2);
inputStream.close();
inputStream = null;
break;
}
catch (OutOfMemoryError oom)
{
if (inputStream != null)
{
inputStream.close();
}
inputStream = null;
System.gc();
if (o2 == null)
{
o2 = new BitmapFactory.Options();
o2.inSampleSize = 1;
}
o2.inSampleSize *= 2;
Common.LogEx("Downsampling image due to lack of memory: " + o2.inSampleSize);
oomFlag = true;
retries++;
}
}
while (retries < 5);
if (bmp == null)
{
if (oomFlag)
{
Common.LogEx("Error loading bitmap (OutOfMemoryError)");
}
Common.LogEx("Error loading bitmap.");
return null;
}
// if(bSmall)
// {
// bmp. bmp.setDensity(160);
// }
return bmp;
}
图片压缩生成bitmap工具
最新推荐文章于 2020-09-18 17:22:11 发布