现在手机拍照照片都很多 3~10M很正常,如果要上传到后台那么需要压缩一下,下面利用Glide来压缩
//图片框架 https://github.com/bumptech/glide
implementation 'com.github.bumptech.glide:glide:4.8.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0'
下面的 200 200是宽高 设置的越大 图片越大 比如100 100 就更小了 自己看着办,这里不用担心200 200是不是压缩成正方形了,因为Glide会自动处理,举例:原图3000 x 4000 压缩后变成200 x 267
//对指定路径的图片进行压缩 这里的path是本地的图片路径 比如mnt/sdcard/...
当然也可以是 网络路径的图片 Glide都支持
Bitmap bitmap = Glide.with(MainActivity.this)
.asBitmap()
.load(path)
.submit(200,200)
.get();
然后利用下面的方法保存一下就可以了 这里的path是你要保存的路径 例如:
Environment.getExternalStorageDirectory().getPath() + "/NAME_PIC_FILE.jpg";
CompressFormat.JPEG 图片会更小 但更不清晰 自己看着办
* 保存图片到sdcard
* @param bitmap
public static void savePicToSdcard(String path,Bitmap bitmap) {
if (bitmap != null) {
try {
FileOutputStream out = new FileOutputStream(path);
bitmap.compress(Bitmap.CompressFormat.PNG, 10, out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
经测试 9M的图片 压缩完后 73k
压缩完了 建议调用一下 bitmap.recycle();
在图片大小尽量不变化的场景下,推荐使用
https://github.com/Curzibn/Luban
框架 高仿微信压缩策略
在图片大小要明显变化的情况下,比如拍照后压缩成头像那么大,可以使用以上方法,当然也可以使用
https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/README-CN.md
工具类里面的
ImageUtils.compressByScale() 指定宽高压缩,当然这个工具类里面还提供了 其他压缩方法。
现在手机拍照照片都很多 3~10M很正常,如果要上传到后台那么需要压缩一下,下面利用Glide来压缩//图片框架 https://github.com/bumptech/glideimplementation 'com.github.bumptech.glide:glide:4.8.0'annotationProcessor 'com.github.bumptech.glide:comp...
前言:这一节里面我们将介绍
Glide
如何对
图片
进行
压缩
,这一点在加载
图片
较多或者加载的
图片
像素很高的程序里面至关重要1.Android
图片
显示相关知识这里会讲一下
图片
显示相关的基础知识,如果不关心的可以直接跳到第二点,不过建议是最好看一下1.1
图片
质量分类安卓
图片
显示的质量配置主要分为四种:
ARGB_8888 :32位图,带透明度,每个像素占4个字节
ARGB_4444 :16位图,带透明度,每个
项目中遇到,需要用户上传
图片
的场景。结果用户上传的、特别是拍摄后的
图片
,分辨率很大,长宽2000多3000甚至更高,一个
图片
5MB以上。 造成之后,从网络上加载这些
图片
,比较慢。
所以,不得不在上传前
进行
压缩
后,再上传。
等比例缩放
图片
在聊天列表中比较常见,而不是显示固定宽高的
图片
。最近对IM项目迁移到Androidx时,顺便升级了
glide
,发现
glide
等比例缩放
图片
出现bug(自定义ImageViewTarget实现
图片
缩放),第一次能正常加载,第二次无法正常等比例缩放。原来项目是使用
glide
3.7.0,现在是使用gilde 4.11.0 (4.10.0开始支持AndroidX)
不同版本...
现在手机拍照都是好几兆,直接把原图上传到服务器,对于用户来说,直接就崩溃了,在有WiFi的情况下还好。但当其他用户查看列表时,看一会估计手机都得欠费了。所以在上传
图片
的时候,要对
图片
进行
压缩
。
注意:这里的
压缩
是指质量
压缩
,不是尺寸
压缩
。比如当我们拍一张照片,要上传到服务器。我们需要先把这个照片,读到内存中,然后
进行
压缩
,最后把
压缩
后的
文件
输出。关于
图片
的内存了,怎么加载节省内存了,这里就不说了
Glide
和Picasso都是
图片
加载框架,用法相似:
//
Glide
的用法
Glide
.with(context).load(url).into(imageView);
//Picasso的用法
Picasso.with(context).load(url).into(imageView);
不同的地方,也是
Glide
的优点:
with()方法里面的参数可以是Context、Activity、Fragment,并且后面两个参数类型可以使这个
图片
和后面连个参数的生命周期绑定。
移动端的
图片压缩
是一个老生常谈的话题,也曾涌现过不少诸如Luban之类的优秀的
图片压缩
工具库,但在GIF图像领域的
压缩
方案却几乎处于一片空白。
许多开发者不知道的是,实际上,已经有一套现成的GIF图像
压缩
工具集,就内置在你集成的
Glide
图片
加载框架之中。
大家好,我是潜伏于各大群中收集GIF表情包的椎锋陷陈,今天我们要分享的是移动端的GIF图像
压缩
方案。
我们会从GIF图像的基础知识出发,介绍几种常见的GIF图像
压缩
策略,然后
利用
Glide
框架内部自带的
压缩
工具集来实现。
过程中如有不合理的地方,
在和 Picasso 比较后,
Glide
有更加高效的内存管理。
Glide
自动限制了
图片
的尺寸在缓存和内存中,并给到 ImageView 需要的尺寸。Picasso 也有这样的能力,但需要调用 fit() 方法。对于
Glide
,如果
图片
不会自动适配到 ImageView,调用 override(horizontalSize,
verticalSize) 。这将在
图片
显示到 ImageVie
原创不易,转发请注明出处。
在拍照上传或相册选择
图片
上传时,需要将选择的
图片
进行
压缩
,如果不
压缩
,就可能出现内存溢出的情况,导致程序崩溃。
在我的一个上线的项目中,经过实践,我总结出一套方便可用的
压缩
方法,在这套方法中,用到了一个开源的工具:com.blankj:utilcode:1.7.1。
具体实践步骤如下:
1:按比例
压缩
首先,根据
图片
的地址获取到file
文件
,然后将file
文件
对象传入I...
如果
Glide
加载的
图片
出现错误或者无法显示的情况,可以考虑以下几个方面:
1.
图片
链接错误:检查
图片
的链接是否正确,确保
图片
能够正常加载。如果
图片
链接错误,可以尝试更正链接。
2.
图片
格式错误:
Glide
支持多种
图片
格式,但是不支持所有的
图片
格式。如果
图片
格式不被支持,
Glide
会无法加载
图片
。可以尝试将
图片
转换为支持的格式。
3. 缓存问题:
Glide
会将
图片
缓存到本地,如果缓存的
图片
出现错误,就会导致加载错误或者无法显示。可以尝试清除
Glide
的缓存,或者在加载
图片
时禁用缓存。
4.
图片
大小错误:如果
图片
太大,
Glide
可能会无法加载。可以尝试将
图片压缩
到适当的大小。
如果以上方法都无法解决问题,可以考虑使用其他的
图片
加载库,或者检查代码中是否有其他问题导致
图片
无法正常加载。
constructor(context: Context) : super(context)
constructor(context: Context, attr: AttributeSet) : super(context, attr)
override fun selectTab(tab: Tab?) {
if (hookTab == tab) {
}else{
super.selectTab(tab)
Android Mqtt 开源框架 EasyMqttAndroidClient
xinglei0352: