Android二级采样
二级采样
需要寻找工具类的请访问https://blog.youkuaiyun.com/SageDeceiveFiend/article/details/90215498三级缓存部分!
什么是二级采样 二级采样是一种对图片进行压缩的技术 原理就是对图片边框进行比
例的缩小再对图片像素点进行等比例的缩小最后形成一张新的图片这样就叫做二级采样
下面的图为原图 上面顶部的图为二级采样后的图片
// An highlighted block
public class MainActivity extends AppCompatActivity {
ImageView img;
ImageView imgimg;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
img=findViewById(R.id.img);
imgimg=findViewById(R.id.imgimg);
try {
byte[] bytes = new MyAsnatask().execute("http://www.dv37.com/upload/editor/201804/1524894535_871992.jpg").get();
//第一次采样:只采边框 计算压缩比例
BitmapFactory.Options options = new BitmapFactory.Options();
//设置只采边框
options.inJustDecodeBounds = true;
BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
int width = options.outWidth;
int height = options.outHeight;
//计算缩放比例
int size = 2;
while (width / size > 400 || height / size > 400) {
size *= 2;
}
设置只采边框为fasle
options.inJustDecodeBounds=false;
//设置缩放比例
options.inSampleSize=size;
Bitmap bitmap1= BitmapFactory.decodeByteArray(bytes,0,bytes.length);
Bitmap bitmap=BitmapFactory.decodeByteArray(bytes,0,bytes.length,options);//采样
img.setImageBitmap(bitmap);
imgimg.setImageBitmap(bitmap1);
} catch (ExecutionException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}