zoukankan      html  css  js  c++  java
  • bitmap自己项目中处理遇到的问题

    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郝金刚



  • 相关阅读:
    AWS 磁盘 在线扩容(SSD 磁盘)
    磁盘扩容出错:e2fsck: Bad magic number in super-block while trying to open /dev/vdb1
    manjaro_install_all_in_one
    docker_info_06_stressTest 压力测试
    docker_info_05_registry 仓库管理
    docker_info_04_image 镜像管理
    docker_info_03_volume 数据卷管理
    docker_info_02_network 网络管理
    docker_info_01_install 安装
    docker-ce_install_centos75
  • 原文地址:https://www.cnblogs.com/widgetbox/p/9174593.html
Copyright © 2011-2022 走看看