代码地址:https://github.com/zhangjinself/QQReadBg
android 图片加载过多会引起oom异常,所以大多数的时候我们需要和图片打交道,那我们需要怎么样来处理图片比较多的情况呢,最近在处理图片,突然想到了一种情况,如果是图片被缩放了,是否会改变图片的大小呢,于是作了以下实验
试验思路,通过一个拖动的seekBar来改变图片的缩放的大小,通过不断的改变progress,来控制图片的大小
代码如下
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if(progress>0) {
newBitmap=getImageSize2(progress);
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
/**
* 根据缩放比例来改变图片大小
* @param scall
* @return
*/
private Bitmap getImageSize2(int scall){
Bitmap srcBitmap= BitmapFactory.decodeResource(getResources(), R.mipmap.bg);
Log.i("byte","srcbyte "+srcBitmap.getByteCount());
Bitmap newBitmap =Bitmap.createBitmap(
srcBitmap.getWidth()/scall,srcBitmap.getHeight()/scall, Bitmap.Config.ARGB_8888);
Canvas canvas =new Canvas(newBitmap);
//同时缩放会显示原图大小
canvas.scale((1f/scall),(1f/scall));
canvas.drawBitmap(srcBitmap,0,0,new Paint());
Log.i("byte","newBitmap "+newBitmap.getByteCount());
return newBitmap;
}
效果图:
由效果图,可以看出,一定比例的绽放会造成图片失真的,尤其在对图片缩放后进行高斯模糊,根据看不清楚原图片的样子,所以对于要求图片清晰度不变的情况下,缩放并不是一个好的选择,虽然它改变了图片的大小。