Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android中将EXIF元数据写入图像_Android_Bitmap_Metadata_Exif - Fatal编程技术网

在Android中将EXIF元数据写入图像

在Android中将EXIF元数据写入图像,android,bitmap,metadata,exif,Android,Bitmap,Metadata,Exif,我想在图像中存储一些元数据。我的相机应用程序提供了一个位图,我将其存储在存储(MediaStore)设备中。除此之外,我还想在图片的元数据中添加一些标记。我认为EXIF是一个很好的方法。但我找不到关于如何做这件事的好参考资料 如果有一些工具可以在Android编程中实现此任务,请让我知道 谢谢好的,有人(离线)给我指了一个有用的资源。ExifInterface看起来像我正在搜索的内容。有一篇文章演示了如何在Android中读取EXIF元数据,我认为写作应该不会有太大的不同 我不知道,但我们是否可

我想在图像中存储一些元数据。我的相机应用程序提供了一个位图,我将其存储在存储(MediaStore)设备中。除此之外,我还想在图片的元数据中添加一些标记。我认为EXIF是一个很好的方法。但我找不到关于如何做这件事的好参考资料

如果有一些工具可以在Android编程中实现此任务,请让我知道

谢谢

好的,有人(离线)给我指了一个有用的资源。
ExifInterface
看起来像我正在搜索的内容。有一篇文章演示了如何在Android中读取EXIF元数据,我认为写作应该不会有太大的不同

我不知道,但我们是否可以使用EXIF来编写任意元数据,即除中指定的元数据(如纬度、经度、flash等)之外的元数据。如果不是,将任意元数据写入图像文件的首选方法是什么

谢谢


我从

ExiFinInterface复制了答案,它可能有点不可靠——我看到它在某些情况下损坏了EXIF数据。处理更多EXIF标记(包括自定义EXIF标记)的更可靠选项是Sanselan Android。Sanselan Android的使用示例如下:请查看您能否从第2段中提出一个新问题,以便我们能够正确回答?(我觉得答案是肯定的)刚刚做了:我还发现这个库很有用:
public static void writeFile (File photo, double latitude, double longitude) throws IOException{
    ExifInterface exif = null;

    try{
        Log.v("latiDouble", ""+latitude);
        Log.v("longiDouble", ""+longitude);
        exif = new ExifInterface(photo.getCanonicalPath());
        if (exif != null) { 
            double latitu = latitude;
            double longitu = longitude;
            double alat = Math.abs(latitu);
            double along = Math.abs(longitu);
            String stringLati = convertDoubleIntoDegree(alat);
            String stringLongi = convertDoubleIntoDegree(along);
            exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE, stringLati);
            exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE, stringLongi);
            Log.v("latiString", ""+ stringLati);
            Log.v("longiString", ""+ stringLongi);
            exif.saveAttributes();
            String lati = exif.getAttribute (ExifInterface.TAG_GPS_LATITUDE);
            String longi = exif.getAttribute (ExifInterface.TAG_GPS_LONGITUDE);
            Log.v("latiResult", ""+ lati);
            Log.v("longiResult", ""+ longi);
        } 
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}