@ -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 ;