Signal-Android/src/org/thoughtcrime/securesms/components/subsampling/AttachmentBitmapDecoder.java

46 lines
1.2 KiB
Java

package org.thoughtcrime.securesms.components.subsampling;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import com.davemorrissey.labs.subscaleview.decoder.ImageDecoder;
import com.davemorrissey.labs.subscaleview.decoder.SkiaImageDecoder;
import org.thoughtcrime.securesms.mms.PartAuthority;
import java.io.InputStream;
public class AttachmentBitmapDecoder implements ImageDecoder{
public AttachmentBitmapDecoder() {}
@Override
public Bitmap decode(Context context, Uri uri) throws Exception {
if (!PartAuthority.isLocalUri(uri)) {
return new SkiaImageDecoder().decode(context, uri);
}
InputStream inputStream = PartAuthority.getAttachmentStream(context, uri);
try {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
Bitmap bitmap = BitmapFactory.decodeStream(inputStream, null, options);
if (bitmap == null) {
throw new RuntimeException("Skia image region decoder returned null bitmap - image format may not be supported");
}
return bitmap;
} finally {
if (inputStream != null) inputStream.close();
}
}
}