android实现将位置信息写入JPEG图片文件

android实现将位置信息写入JPEG图片文件,第1张

概述通过ExifInterface可以将拍照时的一些属性信息写入图片文件里,其中包括经纬度信息。本文介绍一种将经纬度坐标写入JPEG图片文件的方法!

通过ExifInterface可以将拍照时的一些属性信息写入图片文件里,其中包括经纬度信息。本文介绍一种将经纬度坐标写入JPEG图片文件的方法!

核心代码

/*** 浮点型经纬度值转成度分秒格式* * @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;	}/*** 将经纬度信息写入JPEG图片文件里* * @param picPath*      JPEG图片文件路径* @param dLat*      纬度* @param dLon*      经度*/	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) // 无经纬度信息{	exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE,decimalToDMS(dLat));	exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE_REF,dLat > 0 ? "N" : "S"); // 区分南北半球	exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE,decimalToDMS(dLon));	exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE_REF,dLon > 0 ? "E" : "W"); // 区分东经西经	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);}

第一次运行结果

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

原始图片没有位置信息,通过调用writeLatLonIntoJpeg(strimgPath,116.123456)来模拟写入一个位置。

第二次运行结果

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

以上这篇androID实现将位置信息写入JPEG图片文件就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程小技巧。

总结

以上是内存溢出为你收集整理的android实现将位置信息写入JPEG图片文件全部内容,希望文章能够帮你解决android实现将位置信息写入JPEG图片文件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1146713.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存