//根据imageview的大小对图片进行适当的压缩
protected static Bitmap compress(ImageView iv, InputStream in) {
//先获得imgview大小,如果是wrop count 得到的可能是0
int width=iv.getWidth();
int height=iv.getHeight();
if(width==0||height==0){
//第一种:折中,用固定尺寸
//第二种:用设备屏幕宽和高
width=context.getResources().getDisplayMetrics().widthPixels;
height=context.getResources().getDisplayMetrics().heightPixels;
}
try {
//首先将inputstream转换为bite[]
ByteArrayOutputStream out=new ByteArrayOutputStream();
int len=-1;
while ((len=in.read())!=-1) {
out.write(len);
}
byte[] bytes=out.toByteArray();
out.close();
Options opt=new Options();
opt.inJustDecodeBounds=true;
BitmapFactory.decodeByteArray(bytes, 0, bytes.length,opt);
int bitmapwidth=opt.outWidth;
int bitmapheight=opt.outHeight;
int samplesize=1;//压缩比
if(bitmapwidth*1.0/width>1||bitmapheight*1.0/height>1){
samplesize=(int) Math.ceil(Math.max(bitmapwidth*1.0/width, bitmapheight*1.0/height));
}
opt.inSampleSize=samplesize;
opt.inJustDecodeBounds=false;
Bitmap bitmap=BitmapFactory.decodeByteArray(bytes, 0,bytes.length);
return bitmap;
} catch (Exception e) {
e.printStackTrace();
return null ;
}
}
protected static Bitmap compress(ImageView iv, InputStream in) {
//先获得imgview大小,如果是wrop count 得到的可能是0
int width=iv.getWidth();
int height=iv.getHeight();
if(width==0||height==0){
//第一种:折中,用固定尺寸
//第二种:用设备屏幕宽和高
width=context.getResources().getDisplayMetrics().widthPixels;
height=context.getResources().getDisplayMetrics().heightPixels;
}
try {
//首先将inputstream转换为bite[]
ByteArrayOutputStream out=new ByteArrayOutputStream();
int len=-1;
while ((len=in.read())!=-1) {
out.write(len);
}
byte[] bytes=out.toByteArray();
out.close();
Options opt=new Options();
opt.inJustDecodeBounds=true;
BitmapFactory.decodeByteArray(bytes, 0, bytes.length,opt);
int bitmapwidth=opt.outWidth;
int bitmapheight=opt.outHeight;
int samplesize=1;//压缩比
if(bitmapwidth*1.0/width>1||bitmapheight*1.0/height>1){
samplesize=(int) Math.ceil(Math.max(bitmapwidth*1.0/width, bitmapheight*1.0/height));
}
opt.inSampleSize=samplesize;
opt.inJustDecodeBounds=false;
Bitmap bitmap=BitmapFactory.decodeByteArray(bytes, 0,bytes.length);
return bitmap;
} catch (Exception e) {
e.printStackTrace();
return null ;
}
}