bitmap自己项目中处理遇到的问题
2024-09-19 22:59:25
String path = "图片路径";
Bitmap bitmap = BitmapFactory.decodeFile(path);
安卓处理图片都是Bitmap,然后取到图片的信息,用来Bitmap处理压缩大小,旋转图片角度,保存本地等等处理
然而实际项目中 Bitmap bitmap = BitmapFactory.decodeFile(path); 这个bitmap有可能拿到是空
图片有问题就拿到是空的,正好也可以通过Bitmap是否为空来判断图片是否有问题
//图片压缩
new Thread(new Runnable() {
@Override
public void run() {
stepListener.changeProText(0, path);
byte[] bytes = null;
if(path.contains("gif")){
bytes = GifCompress.compressGifToByte(path);
}else{
Bitmap bitmap = null;
try {
bitmap = Bimp.compressionToBitmap(path);
} catch (Exception e) {
e.printStackTrace();
}
if(bitmap != null){
bytes = Compress.compressPicByte(bitmap);
bitmap.recycle();
}else{
try {
InputStream in = new FileInputStream(path);
bytes = new byte[in.available()];
in.read(bytes);
in.close();
}catch (Exception e){
LogUtil.i("Exception",e.toString());
}
}
}
stepListener.changeProText(1, path);
uploadPicToOss(path_upload, path, bytes, perTotal);
}
}).start();
项目中实际上传的是流数组,如果不处理那流数组就是空的,这里是阿里的上传处理了没有崩溃,如果不处理,必然崩溃。
如果实在没办法,防止崩溃可以直接把图片路径直接转成流变为数组防止崩溃。
这里就是提供一个思路以后如果不需要处理图片直接转流数组没有一点问题,以后可以借鉴。具体到项目中直接有问题的图片
直接就不上传,没问题的上传,完美修改项目中的问题,微信就是这么处理,微信细节做得不错,值得学习。
by haojingang郝金刚
最新文章
- C#基础-out与ref字段
- java中使用队列:java.util.Queue (转)
- windows下git识别大小写配置
- 用ajax实现评论刷新
- detection reading
- Go语言_时间篇
- Java编程思想学习(十五) 注解
- MSF溢出实战教程
- BZOJ 2292 永远挑战
- 江中微型统计分析软件V1.0版本完成
- Immutable Object模式
- 不是什么时候都可以用栈来声明对象并使用(自动释放)——Delphi里到处都是编译器魔法,并且自动帮助实例化界面元素指针
- JavaEE Tutorials (2) - 使用教程示例
- 浮点型数据转整型的丢失精度问题(C++)
- FragmentManager中Fragment的重复创建、复用问题
- 开源实时消息推送系统 MPush
- 关于QT Graphics View开启OpenGL渲染后复选框、微调框等无法正常显示的问题
- [原]win10下编译lua5.3.4
- NFS常见问题
- solidity-library