如何附加EXIF元数据在Android的序列化的Bitmap

如何附加EXIF元数据在Android的序列化的Bitmap,第1张

ByteArrayOutputStream bos = new ByteArrayOutputStream();

bitmapcompress(CompressFormatJPEG, 100, bos); //Bitmap object is your image

byte[] data = bostoByteArray();

TiffOutputSet outputSet = null;

IImageMetadata metadata = SanselangetMetadata(new File(filepath)); // filepath is the path to your image file stored in SD card (which contains exif info)

JpegImageMetadata jpegMetadata = (JpegImageMetadata) metadata;

if (null != jpegMetadata)

{

TiffImageMetadata exif = jpegMetadatagetExif();

if (null != exif)

{

outputSet = exifgetOutputSet();

}

}

if (null != outputSet)

{

bosflush();

bosclose();

bos = new ByteArrayOutputStream();

ExifRewriter ER = new ExifRewriter();

ERupdateExifMetadataLossless(data, bos, outputSet);

data = bostoByteArray(); //Update you Byte array, Now it contains exif information!

}

效果图:

实现过程:

1、  新建Android工程,命名为TableLayout;

2、  修改mainxml布局文件,具体代码如下:

3、在res/drawable-mdpi目录下新建一个shapeexml文件,该文件是自定义。Shappexml文件中的内容主要如下:

4、  修改主文件,代码如下:

5、  单击该项目,执行。便得到以上效果!

前段时间在做视频播放器的时候碰到一个新需求:需要将视频的地理位置显示在视频的详情里面。第一反应就是每一个视频文件都可以记录下来一些信息,这些信息里面包含了经纬度等等,就像照片的ExifInterface类一样。于是就去查看了MediaRecorder类,便发现了这个类里面有public void setLocation(float latitude, float longitude)这么个方法可以给录制的视频设置经纬度。

所以说明视频文件里面是存储了经纬度的,现在的关键就是找到对应的API去获取视频文件存储的经纬度。回忆以前获取视频的某一帧图像使用的是MediaMetadataRetriever类,通过这个对象是否也可以获取一些别的信息呢?创建mediaMetadataRetriever对象后发现了这么个方法:mediaMetadataRetrieverextractMetadata(int keyCode);看见这个方法名就感觉找到了(提炼出元数据),现在还需要一个关键的keyCode。于是进入到这个类里面浏览源码,发现了一大堆的key:

这里我所需要的仅仅是:public static final int METADATA_KEY_LOCATION = 23;

返回的经纬度格式:+22000+119999,这里需要将经度部分和纬度部分分割开来。

最后通过Geocoder解析出经纬度对应的具体城市位置:

以上就是关于如何附加EXIF元数据在Android的序列化的Bitmap全部的内容,包括:如何附加EXIF元数据在Android的序列化的Bitmap、android中怎么创建一个表格、Android获取Camera录制的视频的地理位置等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存