Android中利用Picasso实现图片压缩指定任意尺寸
2017-02-16 19:52
706 查看
之前做项目时,有个需求是指定照片压缩到任意宽高尺寸上传给服务器。当时我自己写了个图片压缩方法,但是不够完美,小问题不断(比如OOM之类的)。后来看到了神器Picasso不光能加载网络图片,还能以任意尺寸加载本地图片。于是我想,既然Picasso能任意尺寸加载本地图片,那它肯定能任意宽高尺寸压缩图片了。仔细找了下,找到了对应的方法,我刚才测试了一下,发现确实可以满足我的需求,而且图片质量还很不错。在这里特此记录一下。
Picasso的github地址:https://github.com/square/picasso
代码如下:
(其中一定要万分注意,Target 不能直接new 出来,要像我下面一样声明为成员变量。因为Picasso 里面持有Target 用的是弱引用,你要是直接new 就有很大可能被GC回收导致接收不到回调。我快被坑哭了)
然后把回调里面的bitmap保存到本地就是我想要的结果了。
===============================
2017年2月18日补充:Android中指定任意宽高值,压缩Bitmap的原生API是这个:
如果你觉得帮到了你,请给作者打赏一口饭吃:
Picasso的github地址:https://github.com/square/picasso
代码如下:
(其中一定要万分注意,Target 不能直接new 出来,要像我下面一样声明为成员变量。因为Picasso 里面持有Target 用的是弱引用,你要是直接new 就有很大可能被GC回收导致接收不到回调。我快被坑哭了)
private Target target = new Target() { @Override public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { ImageView imageView = (ImageView) findViewById(R.id.image); imageView.setImageBitmap(bitmap); Log.v("tag_2","bitmap.getHeight() = " + bitmap.getHeight()); Log.v("tag_2","bitmap.getWidth() = " + bitmap.getWidth()); } @Override public void onBitmapFailed(Drawable errorDrawable) { } @Override public void onPrepareLoad(Drawable placeHolderDrawable) { } };
Picasso.with(MainActivity.this).load(uri).resize(806,902).centerCrop().into(target);如果传图片地址:
Picasso.with(MainActivity.this).load(new File(path)).resize(806,902).centerCrop().into(target);
然后把回调里面的bitmap保存到本地就是我想要的结果了。
===============================
2017年2月18日补充:Android中指定任意宽高值,压缩Bitmap的原生API是这个:
Bitmap bm = Bitmap.createScaledBitmap(BitmapFactory.decodeFile(path), 502, 302, true);
如果你觉得帮到了你,请给作者打赏一口饭吃:
相关文章推荐
- android压缩图片到指定尺寸
- Android开发之图片处理专题(二):利用AsyncTask和回调接口实现图片的异步加载和压缩
- C# :实现水印与图片合成,并利用Graphics 压缩图像质量 , (委托实现listBox的动态添加提示)。。。。。。。。。。。。
- java 程序实现对图片的压缩生成缩略图并可设定长宽、尺寸压缩率、图片质量
- Android利用webservices实现图片远程上传
- android实现图片按任意路径截取
- Android:指定分辨率和清晰度的图片压缩方法源码
- 【Android游戏开发十六】Android Gesture之【触摸屏手势识别】操作!利用触摸屏手势实现一个简单切换图片的功能!
- Android实战: 如何实现 图片分享菜单加入指定程序
- Android利用gallery实现图片连动的效果
- Android 利用Java实现压缩与解压缩(zip、gzip)支持中文路径
- [Android算法] bitmap 将图片压缩到指定的大小
- Android下图片可拖动到任意位置的效果的实现源码
- C# :实现水印与图片合成,并利用Graphics 压缩图像质量 , (委托实现listBox的动态添加提示)
- 1.3 实现图片压缩、添加文字或图片水印、指定位置裁剪等功能的ImageUtility(内有效果图) (转)
- 【Android游戏开发十六】Android Gesture之【触摸屏手势识别】操作!利用触摸屏手势实现一个简单切换图片的功能!
- 【Android游戏开发十六】Android Gesture之【触摸屏手势识别】操作!利用触摸屏手势实现一个简单切换图片的功能!
- 【Android游戏开发十六】Android Gesture之【触摸屏手势识别】操作!利用触摸屏手势实现一个简单切换图片的功能!
- Android利用Matrix实现图片的放大,缩小以及移动控制
- Android通过手势实现图片按照指定路径移动