繁体   English   中英

如何压缩加载了Glide的可绘制图像

[英]How to compress drawable image that loaded with Glide

我在这里有此代码,我想压缩可绘制结果,我该怎么做?

 Glide.with(context)
                .load(Urls.BASE_URI +items.get(holder.getAdapterPosition()).getUserPhotoUrl())
                .apply(requestOptions
                        .diskCacheStrategy(DiskCacheStrategy.NONE)
                        .skipMemoryCache(true).dontAnimate().fitCenter().circleCrop().override(100,100)
                )
                .into(new SimpleTarget<Drawable>() {
                    @Override
                    public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
                        holder.userPhoto.setImageDrawable(resource);

                    }
                });

试试这个

然后编写此代码以获取可绘制的位图,然后将位图转换为文件

public void doTheJob(){
Bitmap bitmap= BitmapFactory.decodeResource(context.getResources(),
                                           R.drawable.icon_resource);
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 40, bytes);

//you can create a new file name "test.jpg" in sdcard folder.
File f = new File(Environment.getExternalStorageDirectory()
                        + File.separator + "test.jpg");
f.createNewFile();
//write the bytes in file
FileOutputStream fo = new FileOutputStream(f);
fo.write(bytes.toByteArray());


new Compressor(this).compressToFileAsFlowable(f)
                       .subscribeOn(Schedulers.io())
                       .observeOn(AndroidSchedulers.mainThread())
                       .subscribe(file -> getTheBitmapOfTheFile(file), throwable -> throwable.printStackTrace());
// remember close de FileOutput
fo.close();
}

public void getTheBitmapOfTheFile(File file){
        Bitmap bitmap = null;
        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inPreferredConfig = Bitmap.Config.ARGB_8888;
        try {
            bitmap = BitmapFactory.decodeStream(new FileInputStream(file), null, options);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
}

但请不要忘记阅读和写入外部存储的许可

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM