android判斷相機(jī)圖片朝向的簡(jiǎn)單方法
android應(yīng)用里使用相機(jī)圖片時(shí)必須要考慮的一個(gè)問(wèn)題就是圖片朝向,只有判斷對(duì)朝向才能調(diào)整圖片從而更好的展現(xiàn)。本文將介紹一種通過(guò)ExifInterface判斷圖片朝向的方法!
上代碼:
/**
*
* 利用給定路徑下的圖片設(shè)置ImageView
*
* @param imgPath 手機(jī)圖片文件路徑
* @param imgView 需要設(shè)置的ImageView
*/
public void setImg(String imgPath, ImageView imgView) {
File file = new File(imgPath);
if (file.exists() && file.canRead()) {
// -------1.圖片縮放--------
// 手機(jī)屏幕信息
DisplayMetrics metric = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
int dw = metric.widthPixels; // 屏幕寬
int dh = metric.heightPixels; // 屏幕高
// 加載圖像,只是為了獲取尺寸
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true; // 設(shè)置之后可以獲取尺寸信息
Bitmap bitmap = BitmapFactory.decodeFile(imgPath, options);
// 計(jì)算水平和垂直縮放系數(shù)
int heightRatio = (int) Math.ceil(options.outHeight / (float) dh);
int widthRatio = (int) Math.ceil(options.outWidth / (float) dw);
// 判斷哪個(gè)大
if (heightRatio > 1 && widthRatio > 1) {
if (heightRatio > widthRatio) {
options.inSampleSize = heightRatio;
} else {
options.inSampleSize = widthRatio;
}
}
// 圖片縮放
options.inJustDecodeBounds = false;
bitmap = BitmapFactory.decodeFile(imgPath, options);
// -------2.判斷圖片朝向--------
try {
ExifInterface exif = new ExifInterface(imgPath);
int degree = 0; // 圖片旋轉(zhuǎn)角度
if (exif != null) {
int orientation = exif.getAttributeInt(
ExifInterface.TAG_ORIENTATION, -1);
if (orientation != -1) {
switch (orientation) {
case ExifInterface.ORIENTATION_ROTATE_90:
degree = 90;
break;
case ExifInterface.ORIENTATION_ROTATE_180:
degree = 180;
break;
case ExifInterface.ORIENTATION_ROTATE_270:
degree = 270;
break;
default:
break;
}
}
}
if (degree != 0) { // 圖片需要旋轉(zhuǎn)
int width = bitmap.getWidth();
int height = bitmap.getHeight();
Matrix matrix = new Matrix();
matrix.preRotate(degree);
Bitmap mRotateBitmap = Bitmap.createBitmap(bitmap, 0, 0,
width, height, matrix, true);
imgView.setImageBitmap(mRotateBitmap);
} else {
imgView.setImageBitmap(bitmap);
}
} catch (IOException e) {
}
}
}
本代碼包含兩大功能:
1. 圖片縮放:原始圖片一般比較大,經(jīng)過(guò)縮小才能使用;
2. 圖片旋轉(zhuǎn):由于用戶(hù)拍照時(shí)手機(jī)角度不同,所得照片可能需要旋轉(zhuǎn)。
以上這篇android判斷相機(jī)圖片朝向的實(shí)現(xiàn)方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Android實(shí)現(xiàn)環(huán)形進(jìn)度條
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)環(huán)形進(jìn)度條,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07
Android ScrollView實(shí)現(xiàn)向上滑動(dòng)控件頂部懸浮效果
這篇文章主要為大家詳細(xì)介紹了Android ScrollView實(shí)現(xiàn)向上滑動(dòng)控件頂部懸浮效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05
android RecyclerView的一些優(yōu)化點(diǎn)介紹
大家好,本篇文章主要講的是android RecyclerView的一些優(yōu)化點(diǎn)介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話(huà)記得收藏一下,方便下次瀏覽2021-12-12
詳解Android Service 使用時(shí)的注意事項(xiàng)
這篇文章主要介紹了詳解Android Service 使用時(shí)的注意事項(xiàng),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10
Android 使用Vitamio打造自己的萬(wàn)能播放器(6)——在線(xiàn)播放(播放列表)
本文主要介紹Android Vitamino在線(xiàn)播放列表,這里給大家提供效果圖和實(shí)例代碼以便大家參考學(xué)習(xí),希望能幫助開(kāi)發(fā)Android視頻播放的朋友2016-07-07
Android Flutter實(shí)現(xiàn)五種酷炫文字動(dòng)畫(huà)效果詳解
animated_text_kit這一動(dòng)畫(huà)庫(kù)有多種文字動(dòng)畫(huà)效果,文中將利用它實(shí)現(xiàn)五種酷炫的文字動(dòng)畫(huà):波浪涌動(dòng)效果、波浪線(xiàn)跳動(dòng)文字組、彩虹動(dòng)效、滾動(dòng)廣告牌效果和打字效果,需要的可以參考一下2022-03-03

