byte---bitmpap
处理
/**
* 从给定的路径加载图片,并指定是否自动旋转方向
*/
@RequiresApi(api = Build.VERSION_CODES.N)
public static Bitmap decodeImg(byte[] jpeg) {
Bitmap bitmap = null;
InputStream isBm = new ByteArrayInputStream(jpeg);
int digree = 0;
ExifInterface exif = null;
try {
exif = new ExifInterface(isBm);
} catch (IOException e) {
e.printStackTrace();
exif = null;
}
if (exif != null) {
// 读取图片中相机方向信息
int ori = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION,
ExifInterface.ORIENTATION_NORMAL);
Log.i("tag", "读取角度:" + ori);
// 计算旋转角度
switch (ori) {
case ExifInterface.ORIENTATION_ROTATE_90:
digree = 270;
break;
case ExifInterface.ORIENTATION_NORMAL:
digree = 180;
break;
default:
digree = 0;
break;
}
}
InputStream input = null;
try{
BitmapFactory.Options options=new BitmapFactory.Options();
options.inSampleSize = 8;
input = new ByteArrayInputStream(jpeg);
SoftReference softRef = new SoftReference(BitmapFactory.decodeStream(input, null, options));
bitmap = (Bitmap)softRef.get();;
}catch(Exception e){
e.printStackTrace();
}finally{
if(jpeg!=null){
jpeg = null;
}
if(input!=null){
try {
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
try {
isBm.close();
}catch (IOException e) {
e.printStackTrace();
}
}
if (digree != 0) {
// 旋转图片
Matrix m = new Matrix();
m.postRotate(digree);
bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(),
bitmap.getHeight(), m, true);
}
return bitmap;
}