a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 系統(tǒng) > Android > 正文

Android圖片處理:識別圖像方向并顯示實例教程

2020-04-11 12:09:40
字體:
來源:轉載
供稿:網友
在Android中使用ImageView顯示圖片的時候發(fā)現圖片顯示不正,方向偏了或者倒過來了。
解決這個問題很自然想到的分兩步走:
1、自動識別圖像方向,計算旋轉角度;
2、對圖像進行旋轉并顯示。

一、識別圖像方向
首先在這里提一個概念EXIF(Exchangeable Image File Format,可交換圖像文件),具體解釋參見Wiki。
簡而言之,Exif是一個標準,用于電子照相機(也包括手機、掃描器等)上,用來規(guī)范圖片、聲音、視屏以及它們的一些輔助標記格式。
Exif支持的格式如下:
圖像
壓縮圖像文件:JPEG、DCT
非壓縮圖像文件:TIFF
不支持:JPEG 2000、PNG、GIF
音頻
RIFF、WAV
Android提供了對JPEG格式圖像Exif接口支持,可以讀取JPEG文件metadata信息,參見ExifInterface.
這些Metadata信息總的來說大致分為三類:日期時間、空間信息(經緯度、高度)、Camera信息(孔徑、焦距、旋轉角、曝光量等等)。

二、圖像旋轉
Android中提供了對Bitmap進行矩陣旋轉的操作,參見Bitmap提供的靜態(tài)createBitmap方法. 
public static Bitmap createBitmap (Bitmap source, int x, int y, int width, int height, Matrix m, boolean filter) 

IllegalArgumentException if the x, y, width, height values are outside of the dimensions of the source bitmap. 
到此這兩個問題理論上都解決了,開始實際操作一下吧,參照以下代碼。
復制代碼 代碼如下:

public class IOHelper {
......
/** 從給定路徑加載圖片*/
public static Bitmap loadBitmap(String imgpath) {
return BitmapFactory.decodeFile(imgpath);
}
/** 從給定的路徑加載圖片,并指定是否自動旋轉方向*/
public static Bitmap loadBitmap(String imgpath, boolean adjustOritation) {
if (!adjustOritation) {
return loadBitmap(imgpath);
} else {
Bitmap bm = loadBitmap(imgpath);
int digree = 0;
ExifInterface exif = null;
try {
exif = new ExifInterface(imgpath);
} catch (IOException e) {
e.printStackTrace();
exif = null;
}
if (exif != null) {
// 讀取圖片中相機方向信息
int ori = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION,
ExifInterface.ORIENTATION_UNDEFINED);
// 計算旋轉角度
switch (ori) {
case ExifInterface.ORIENTATION_ROTATE_90:
digree = 90;
break;
case ExifInterface.ORIENTATION_ROTATE_180:
digree = 180;
break;
case ExifInterface.ORIENTATION_ROTATE_270:
digree = 270;
break;
default:
digree = 0;
break;
}
}
if (digree != 0) {
// 旋轉圖片
Matrix m = new Matrix();
m.postRotate(digree);
bm = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(),
bm.getHeight(), m, true);
}
return bm;
}
}
......
}
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 久久婷婷视频 | 国产成人久久精品一区二区三区 | 99免费看 | 日韩一区二 | 蜜臀av在线播放一区二区三区 | 久久久久综合 | 久久91 | 成人不卡在线 | 中文字幕一区二区三区乱码图片 | 亚洲一二三区影视 | 一区二区三区国产好 | 久久99久久99精品 | 多p视频| 中文字幕在线观看的电影 | 男人天堂视频在线观看 | 日韩精品一区二区三区在线 | 蜜桃av中文字幕 | 9 1在线观看 | 亚洲欧洲一区二区 | 午夜免费电影 | 蜜桃久久一区二区三区 | 国产精品视频一区二区三区 | av中文在线 | 国产精品美女久久久久久不卡 | 国产美女av | 久久久久网站 | 国产成a人亚洲精 | 久久新 | aaa日本高清在线播放免费观看 | av网站免费观看 | xoxo国产三区精品欧美 | 波多野结衣一区三区 | 亚洲天堂一区二区三区 | 久久精品 | 亚洲蜜臀av乱码久久精品蜜桃 | t66y最新地址一地址二69 | 日韩视频在线观看 | www.日韩大片| 国产精品久久久久久福利一牛影视 | 久久综合狠狠综合久久综合88 | 午夜天 |