1package com.bumptech.glide.load.resource.bitmap;
2
3import android.graphics.Bitmap;
4import com.bumptech.glide.load.engine.Resource;
5import com.bumptech.glide.load.ResourceEncoder;
6
7import java.io.OutputStream;
8
9public class BitmapEncoder implements ResourceEncoder<Bitmap> {
10    private Bitmap.CompressFormat compressFormat;
11    private int quality;
12
13    public BitmapEncoder() {
14        this(null, 70);
15    }
16
17    public BitmapEncoder(Bitmap.CompressFormat compressFormat, int quality) {
18        this.compressFormat = compressFormat;
19        this.quality = quality;
20    }
21
22    @Override
23    public boolean encode(Resource<Bitmap> resource, OutputStream os) {
24        final Bitmap bitmap = resource.get();
25        bitmap.compress(getFormat(bitmap), quality, os);
26        return true;
27    }
28
29    @Override
30    public String getId() {
31        return "BitmapEncoder.com.bumptech.glide.load.resource.bitmap";
32    }
33
34    private Bitmap.CompressFormat getFormat(Bitmap bitmap) {
35        if (compressFormat != null) {
36            return compressFormat;
37        } else if (bitmap.hasAlpha()) {
38            return Bitmap.CompressFormat.PNG;
39        } else {
40            return Bitmap.CompressFormat.JPEG;
41        }
42    }
43
44}
45