1bcf4a0dae04a4ad14287eeb34069a97c96fe9bb1Sam Juddpackage com.bumptech.glide.load.resource.transcode;
295800ddedeb8ed0390310ff80a68d3d0eeef00baSam Judd
395800ddedeb8ed0390310ff80a68d3d0eeef00baSam Juddimport android.graphics.Bitmap;
4f7a6d65cf7c1a41908dd48e0dab68ee5b881387eSam Judd
5b7c7c2b2505f996dbda219faeb0d08dc1c9982d7Sam Juddimport com.bumptech.glide.load.engine.Resource;
6bcf4a0dae04a4ad14287eeb34069a97c96fe9bb1Sam Juddimport com.bumptech.glide.load.resource.bytes.BytesResource;
795800ddedeb8ed0390310ff80a68d3d0eeef00baSam Judd
895800ddedeb8ed0390310ff80a68d3d0eeef00baSam Juddimport java.io.ByteArrayOutputStream;
995800ddedeb8ed0390310ff80a68d3d0eeef00baSam Judd
105f4610b54d517be58105bcf73ce3291ba79f9f40Sam Judd/**
115f4610b54d517be58105bcf73ce3291ba79f9f40Sam Judd * An {@link com.bumptech.glide.load.resource.transcode.ResourceTranscoder} that converts
125f4610b54d517be58105bcf73ce3291ba79f9f40Sam Judd * {@link android.graphics.Bitmap}s into byte arrays using
135f4610b54d517be58105bcf73ce3291ba79f9f40Sam Judd * {@link android.graphics.Bitmap#compress(android.graphics.Bitmap.CompressFormat, int, java.io.OutputStream)}.
145f4610b54d517be58105bcf73ce3291ba79f9f40Sam Judd */
1595800ddedeb8ed0390310ff80a68d3d0eeef00baSam Juddpublic class BitmapBytesTranscoder implements ResourceTranscoder<Bitmap, byte[]> {
1695800ddedeb8ed0390310ff80a68d3d0eeef00baSam Judd    private final Bitmap.CompressFormat compressFormat;
1795800ddedeb8ed0390310ff80a68d3d0eeef00baSam Judd    private final int quality;
1895800ddedeb8ed0390310ff80a68d3d0eeef00baSam Judd
1995800ddedeb8ed0390310ff80a68d3d0eeef00baSam Judd    public BitmapBytesTranscoder() {
2095800ddedeb8ed0390310ff80a68d3d0eeef00baSam Judd        this(Bitmap.CompressFormat.JPEG, 100);
2195800ddedeb8ed0390310ff80a68d3d0eeef00baSam Judd    }
2295800ddedeb8ed0390310ff80a68d3d0eeef00baSam Judd
2395800ddedeb8ed0390310ff80a68d3d0eeef00baSam Judd    public BitmapBytesTranscoder(Bitmap.CompressFormat compressFormat, int quality) {
2495800ddedeb8ed0390310ff80a68d3d0eeef00baSam Judd        this.compressFormat = compressFormat;
2595800ddedeb8ed0390310ff80a68d3d0eeef00baSam Judd        this.quality = quality;
2695800ddedeb8ed0390310ff80a68d3d0eeef00baSam Judd    }
2795800ddedeb8ed0390310ff80a68d3d0eeef00baSam Judd
2895800ddedeb8ed0390310ff80a68d3d0eeef00baSam Judd    @Override
2995800ddedeb8ed0390310ff80a68d3d0eeef00baSam Judd    public Resource<byte[]> transcode(Resource<Bitmap> toTranscode) {
3095800ddedeb8ed0390310ff80a68d3d0eeef00baSam Judd        ByteArrayOutputStream os = new ByteArrayOutputStream();
3195800ddedeb8ed0390310ff80a68d3d0eeef00baSam Judd        toTranscode.get().compress(compressFormat, quality, os);
3222fdf9c6fe4fb50f597fcb2e3e5fb7ab410828c7Sam Judd        toTranscode.recycle();
3395800ddedeb8ed0390310ff80a68d3d0eeef00baSam Judd        return new BytesResource(os.toByteArray());
3495800ddedeb8ed0390310ff80a68d3d0eeef00baSam Judd    }
3595800ddedeb8ed0390310ff80a68d3d0eeef00baSam Judd
3695800ddedeb8ed0390310ff80a68d3d0eeef00baSam Judd    @Override
3795800ddedeb8ed0390310ff80a68d3d0eeef00baSam Judd    public String getId() {
38bd01b9765954ac2b99cb5dd76ade740455ad69e9Sam Judd        return "BitmapBytesTranscoder.com.bumptech.glide.load.resource.transcode";
3995800ddedeb8ed0390310ff80a68d3d0eeef00baSam Judd    }
4095800ddedeb8ed0390310ff80a68d3d0eeef00baSam Judd}
41