代碼地址: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;
}
效果圖:
由效果圖,可以看出,一定比例的綻放會造成圖片失真的,尤其在對圖片縮放後進行高斯模糊,根據看不清楚原圖片的樣子,所以對於要求圖片清晰度不變的情況下,縮放並不是一個好的選擇,雖然它改變了圖片的大小。