Provides synchronous version of decodeBitmap (#224)

* Provides synchronous version of decodeBitmap and adds annotation to make it clear this should run on a worker thread

Closes #221

* Tidies up decodeBitmap javadoc
pull/240/head
Josh Burton 7 years ago committed by Mattia Iavarone
parent c3e3d43b28
commit 819638862f
  1. 28
      cameraview/src/main/utils/com/otaliastudios/cameraview/CameraUtils.java

@ -8,6 +8,7 @@ import android.graphics.Matrix;
import android.hardware.Camera; import android.hardware.Camera;
import android.os.Handler; import android.os.Handler;
import android.support.annotation.UiThread; import android.support.annotation.UiThread;
import android.support.annotation.WorkerThread;
import android.support.media.ExifInterface; import android.support.media.ExifInterface;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
@ -55,6 +56,19 @@ public class CameraUtils {
} }
/**
* Decodes an input byte array and outputs a Bitmap that is ready to be displayed.
* The difference with {@link android.graphics.BitmapFactory#decodeByteArray(byte[], int, int)}
* is that this cares about orientation, reading it from the EXIF header.
*
* @param source a JPEG byte array
*/
@SuppressWarnings("WeakerAccess")
@WorkerThread
public static void decodeBitmap(final byte[] source) {
decodeBitmap(source, Integer.MAX_VALUE, Integer.MAX_VALUE);
}
/** /**
* Decodes an input byte array and outputs a Bitmap that is ready to be displayed. * Decodes an input byte array and outputs a Bitmap that is ready to be displayed.
* The difference with {@link android.graphics.BitmapFactory#decodeByteArray(byte[], int, int)} * The difference with {@link android.graphics.BitmapFactory#decodeByteArray(byte[], int, int)}
@ -100,9 +114,21 @@ public class CameraUtils {
} }
/**
* Decodes an input byte array and outputs a Bitmap that is ready to be displayed.
* The difference with {@link android.graphics.BitmapFactory#decodeByteArray(byte[], int, int)}
* is that this cares about orientation, reading it from the EXIF header.
*
* The image is also downscaled taking care of the maxWidth and maxHeight arguments.
*
* @param source a JPEG byte array
* @param maxWidth the max allowed width
* @param maxHeight the max allowed height
*/
// TODO ignores flipping // TODO ignores flipping
@SuppressWarnings({"SuspiciousNameCombination", "WeakerAccess"}) @SuppressWarnings({"SuspiciousNameCombination", "WeakerAccess"})
/* for tests */ static Bitmap decodeBitmap(byte[] source, int maxWidth, int maxHeight) { @WorkerThread
public static Bitmap decodeBitmap(byte[] source, int maxWidth, int maxHeight) {
if (maxWidth <= 0) maxWidth = Integer.MAX_VALUE; if (maxWidth <= 0) maxWidth = Integer.MAX_VALUE;
if (maxHeight <= 0) maxHeight = Integer.MAX_VALUE; if (maxHeight <= 0) maxHeight = Integer.MAX_VALUE;
int orientation; int orientation;

Loading…
Cancel
Save