欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

android實(shí)現(xiàn)將位置信息寫入JPEG圖片文件

 更新時間:2017年03月10日 10:34:47   投稿:jingxian  
下面小編就為大家?guī)硪黄猘ndroid實(shí)現(xiàn)將位置信息寫入JPEG圖片文件。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

通過ExifInterface可以將拍照時的一些屬性信息寫入圖片文件里,其中包括經(jīng)緯度信息。本文介紹一種將經(jīng)緯度坐標(biāo)寫入JPEG圖片文件的方法!

核心代碼

/**
* 浮點(diǎn)型經(jīng)緯度值轉(zhuǎn)成度分秒格式
* 
* @param coord
* @return
*/
	public String decimalToDMS(double coord) {
	String output, degrees, minutes, seconds;

// gets the modulus the coordinate divided by one (MOD1).
// in other words gets all the numbers after the decimal point.
// e.g. mod := -79.982195 % 1 == 0.982195
//
// next get the integer part of the coord. On other words the whole
// number part.
// e.g. intPart := -79

	double mod = coord % 1;
	int intPart = (int) coord;

// set degrees to the value of intPart
// e.g. degrees := "-79"

	degrees = String.valueOf(intPart);

// next times the MOD1 of degrees by 60 so we can find the integer part
// for minutes.
// get the MOD1 of the new coord to find the numbers after the decimal
// point.
// e.g. coord := 0.982195 * 60 == 58.9317
// mod := 58.9317 % 1 == 0.9317
//
// next get the value of the integer part of the coord.
// e.g. intPart := 58

	coord = mod * 60;
	mod = coord % 1;
	intPart = (int) coord;
	if (intPart < 0) {
		// Convert number to positive if it's negative.
		intPart *= -1;
}

// set minutes to the value of intPart.
// e.g. minutes = "58"
	minutes = String.valueOf(intPart);

// do the same again for minutes
// e.g. coord := 0.9317 * 60 == 55.902
// e.g. intPart := 55
	coord = mod * 60;
	intPart = (int) coord;
	if (intPart < 0) {
		// Convert number to positive if it's negative.
		intPart *= -1;
	}

// set seconds to the value of intPart.
// e.g. seconds = "55"
	seconds = String.valueOf(intPart);

// I used this format for android but you can change it
// to return in whatever format you like
// e.g. output = "-79/1,58/1,56/1"
	output = degrees + "/1," + minutes + "/1," + seconds + "/1";

// Standard output of D°M′S″
// output = degrees + "°" + minutes + "'" + seconds + "\"";

	return output;
	}

/**
* 將經(jīng)緯度信息寫入JPEG圖片文件里
* 
* @param picPath
*      JPEG圖片文件路徑
* @param dLat
*      緯度
* @param dLon
*      經(jīng)度
*/
	public void writeLatLonIntoJpeg(String picPath, double dLat, double dLon) {
	File file = new File(picPath);
	if (file.exists()) {
	try {
	ExifInterface exif = new ExifInterface(picPath);
	String tagLat = exif
	.getAttribute(ExifInterface.TAG_GPS_LATITUDE);
	String tagLon = exif
	.getAttribute(ExifInterface.TAG_GPS_LONGITUDE);
	if (tagLat == null && tagLon == null) // 無經(jīng)緯度信息
{
	exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE,
	decimalToDMS(dLat));
	exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE_REF,
	dLat > 0 ? "N" : "S"); // 區(qū)分南北半球
	exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE,
	decimalToDMS(dLon));
	exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE_REF,
	dLon > 0 ? "E" : "W"); // 區(qū)分東經(jīng)西經(jīng)

	exif.saveAttributes();
}
	} catch (Exception e) {

	}
}
	}

測試代碼

String strImgPath = getImageCachePath() + File.separator + "1.jpg";

ExifInterface eif = new ExifInterface(strImgPath);
String lat = eif.getAttribute(ExifInterface.TAG_GPS_LATITUDE);
String latRef = eif.getAttribute(ExifInterface.TAG_GPS_LATITUDE_REF);
String lon = eif.getAttribute(ExifInterface.TAG_GPS_LONGITUDE);
String lonRef = eif.getAttribute(ExifInterface.TAG_GPS_LONGITUDE_REF);

System.out.println("Latitude Ref - " + latRef);
System.out.println("Latitude - " + lat);
System.out.println("Longitude Ref - " + lonRef);
System.out.println("Longitude - " + lon);

if (lat == null && lon == null) // 沒有位置信息才寫入
{
 writeLatLonIntoJpeg(strImgPath, 39.23456, 116.123456);
}

第一次運(yùn)行結(jié)果

05-22 17:36:24.566: I/System.out(17966): Latitude Ref - null
05-22 17:36:24.566: I/System.out(17966): Latitude - null
05-22 17:36:24.566: I/System.out(17966): Longitude Ref - null
05-22 17:36:24.566: I/System.out(17966): Longitude - null

原始圖片沒有位置信息,通過調(diào)用writeLatLonIntoJpeg(strImgPath, 39.23456, 116.123456)來模擬寫入一個位置。

第二次運(yùn)行結(jié)果

05-22 17:37:11.446: I/System.out(17966): Latitude Ref - N
05-22 17:37:11.446: I/System.out(17966): Latitude - 39/1,14/1,4/1
05-22 17:37:11.446: I/System.out(17966): Longitude Ref - E
05-22 17:37:11.446: I/System.out(17966): Longitude - 116/1,7/1,24/1

以上這篇android實(shí)現(xiàn)將位置信息寫入JPEG圖片文件就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 談?wù)凙ndroid中的Divider是個什么東東

    談?wù)凙ndroid中的Divider是個什么東東

    在Android應(yīng)用開發(fā)中會經(jīng)常碰到一個叫divider的東西,就是兩個View之間的分割線,本文主要給大家介紹android中的divider相關(guān)知識,需要的朋友可以參考下
    2016-03-03
  • Android ViewPager實(shí)現(xiàn)圖片輪翻效果

    Android ViewPager實(shí)現(xiàn)圖片輪翻效果

    這篇文章主要為大家詳細(xì)介紹了Android ViewPager實(shí)現(xiàn)圖片輪翻效果的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • Android進(jìn)程?;钪嵘M(jìn)程優(yōu)先級

    Android進(jìn)程保活之提升進(jìn)程優(yōu)先級

    這篇文章主要介紹了Android進(jìn)程?;钪嵘M(jìn)程優(yōu)先級,對提升優(yōu)先級感興趣的同學(xué)可以參考下
    2021-04-04
  • android實(shí)現(xiàn)掃碼槍功能

    android實(shí)現(xiàn)掃碼槍功能

    這篇文章主要為大家詳細(xì)介紹了android實(shí)現(xiàn)掃碼槍功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Android SurfaceView與TextureView使用方法詳細(xì)講解

    Android SurfaceView與TextureView使用方法詳細(xì)講解

    SurfaceView和TextureView都繼承View,與普通的View不同的是,它倆可以在獨(dú)立線程中繪制渲染,性能更高,所以常被應(yīng)用在對繪制速率要求比較高的場景,比如相機(jī)預(yù)覽,視頻播放等等
    2022-10-10
  • android實(shí)現(xiàn)驗(yàn)證碼按鈕

    android實(shí)現(xiàn)驗(yàn)證碼按鈕

    這篇文章主要為大家詳細(xì)介紹了android實(shí)現(xiàn)驗(yàn)證碼按鈕功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • Android如何設(shè)置圓角圖片

    Android如何設(shè)置圓角圖片

    這篇文章主要為大家詳細(xì)介紹了Android如何設(shè)置圓角圖片,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • Android實(shí)現(xiàn)日夜間模式的深入理解

    Android實(shí)現(xiàn)日夜間模式的深入理解

    相信Android的日間/夜間模式切換相信大家在平時使用 APP 的過程中都遇到過,比如知乎、簡書中就有相關(guān)的模式切換。實(shí)現(xiàn)日間/夜間模式切換的方案也有許多種,趁著今天有空來講一下日間/夜間模式切換的幾種實(shí)現(xiàn)方案,也可以做一個橫向的對比來看看哪種方案最好。
    2016-09-09
  • Native.js屏幕截圖實(shí)例代碼

    Native.js屏幕截圖實(shí)例代碼

    本文詳細(xì)解讀了Dcloud的H5+API中webview draw使用方法,并給出draw截圖的Android,iOS通用方法,希望對大家有所幫助
    2018-09-09
  • 詳解Android:向服務(wù)器提供數(shù)據(jù)之get、post方式

    詳解Android:向服務(wù)器提供數(shù)據(jù)之get、post方式

    本篇文章主要介紹了詳解Android:向服務(wù)器提供數(shù)據(jù)之get、post方式,具有一定的參考價值,有興趣的可以了解一下。
    2017-03-03

最新評論