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录制的视频的地理位置等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)