Code Monkey home page Code Monkey logo

imagecompress's Introduction

ImageCompress

由于公司项目APP对图片的处理较多,刚开始上手,到处OOM,实在让人脑壳疼!项目迭代到今天有10个月吧!对图片处理也有一些深刻的理解!看了市面上的传统压缩方法!压缩质量虽然可以,但是有些图片失真严重。故此,写一个图片压缩框架,供大家参考,欢迎提意见!

运行效果预览

压缩运行效果预览

多图压缩预览

animation

压缩图片大小预览

animation

使用方法(很简单:简直能用一行代码解决)

拓展性强:
1、可以自定义压缩图片的宽高(默认:1280*720);
2、默认压缩大小为150kb(可以根据自己需求设置),超过150kb压缩,小于不压缩;
3、一行代码解决。

依赖方法

1、 gradle依赖:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
implementation 'com.github.Hu12037102.ImageCompress:compress:2.2.2'
}

/**
 *压缩一张图片
 * @param imageConfig   bean
 * @param onImageResult file回调数据
 */
 CompressImageTask.get().compressImage(SingChoiceImageActivity.this,ImageConfig.getDefaultConfig(mImageFile.getAbsolutePath()), new CompressImageTask.OnImageResult() {
                        @Override
                         public void startCompress() {
                               //压缩前可以选择加载LoadingView
                         }
                        @Override
                        public void resultFileSucceed(File file) {
                             //成功回调
                        }

                        @Override
                        public void resultFileError() {
                          //失败回调
                        }
                    });
/**
 *压缩多张图片(集合)
 * @param list  图片集合
 * @param onImagesResult  file集合回调数据
 */
 CompressImageTask.get().compressImages(MultipleChoiceImageActivity.this, data, new CompressImageTask.OnImagesResult() {
                    @Override
                     public void startCompress() {
                                 //压缩前可以选择加载LoadingView
                           }
                     @Override
                     public void resultFilesSucceed(List<File> fileList) {
                         //成功回调
                     }

                     @Override
                     public void resultFilesError() {
                         //失败回调
                     }
                 });
        
/**
 *压缩生成bitmap
 * @param imageConfig  bean
 * @param onBitmapResult  bitmap结果回调
 */
  CompressImageTask.get()
  .compressBitmap(MultipleChoiceImageActivity.this,ImageConfig.getDefaultConfig(mImageFile.getAbsolutePath()), new CompressImageTask.OnBitmapResult() {
             @Override
              public void startCompress() {
               //压缩前可以选择加载LoadingView
              }
           @Override
           public void resultBitmapSucceed(Bitmap bitmap) {//结果成功回调

           }

           @Override
           public void resultBitmapError() {//结果失败回调

           }
       });

       public class ImageConfig {
           /**
            * 压缩默认宽为720px
            */
           public int compressWidth = 720;
           /**
            * 压缩默认长为1280px
            */
           public int compressHeight = 1280;
           public String imagePath;


           public ImageConfig(String imagePath) {
               this.imagePath = imagePath;
           }

           public ImageConfig() {
           }

           /**
            * 图片格式
            */
           public Bitmap.CompressFormat format = Bitmap.CompressFormat.JPEG;

           /**
            * 图片质量
            */
           public Bitmap.Config config = Bitmap.Config.ARGB_8888;


           /**
            * 默认缓存的目录
            */
           public String cachePathDirectory = FileUtils.FILE_DIRECTOR_NAME;

           /**
            * 默认的缓存图片名字
            */
           public String imageName = "/hxb_" + String.valueOf(System.currentTimeMillis()) + UUID.randomUUID().toString().replaceAll("-", "").trim() + ".jpg";

           public int compressSize = CompressPicker.COMPRESS_SIZE;


               /**
                * 调用默认压缩的图片配置属性
                */
                   public static ImageConfig getDefaultConfig(String filePath){
                       return new ImageConfig(filePath);
                   }

       }
}

联系方式

QQ:1069305953
邮箱:[email protected]
微博:Mr_胡小白二胡

imagecompress's People

Contributors

hu12037102 avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.