如何将更新的图像输出到图库?

时间:2015-01-03 00:12:57

标签: java android file jpeg exif

在我的应用程序中使用exif接口将新数据写入存储的图像,使用Android中的相机意图捕获。

问题是当图像文件输出到存储器时,当我查看图库中图像的details时,我更新图像属性的代码实际上并没有更新存储的图像。 / p>

例如,我使用UserComment标记添加一些通用文字作为测试输入,但这不会显示在设备的图片详细信息中。

我的问题是,如何检查数据是否实际写入文件?

如果我知道属性被附加到图像,那么我可以调试文件的存储作为问题。

这是getOutputPhotoFile()方法,用于检索项目目录中最后捕获的图​​像:

private File getOutputPhotoFile() throws IOException {
          File directory = new File(Environment.getExternalStoragePublicDirectory(
                        Environment.DIRECTORY_PICTURES), getPackageName());
          if (!directory.exists()) {
            if (!directory.mkdirs()) {
              Log.e(TAG, "Failed to create storage directory.");
              return null;
            }
          }


          String timeStamp = new SimpleDateFormat("yyyMMdd_HHmmss", Locale.ENGLISH).format(new Date());

          File[] files = directory.listFiles();

          File origFile =  new File(directory.getPath(), "IMG_" + timeStamp + ".jpg");

          if(files.length!=0) {
              File newestFile = files[files.length-1];
              origFile =  new File(directory.getPath() + File.separator + newestFile.getName());
          }

          String mString = "Generic Text..";     
          ExifInterface exifFile = new ExifInterface(origFile.getAbsolutePath());
          exifFile.setAttribute("UserComment", mString);

          exifFile.setAttribute(ExifInterface.TAG_GPS_LATITUDE,
            String.valueOf(latituteField.toString()));

          exifFile.setAttribute(ExifInterface.TAG_GPS_LONGITUDE, 
            String.valueOf(longitudeField.toString()));

          exifFile.saveAttributes();

      return origFile; 

    }

1 个答案:

答案 0 :(得分:0)

在查看ExifInterface API时,似乎没有名为" UserComment"的Exif TAG。

它似乎只支持给定API中提到的TAG。

设置位置值后,您可以使用相同的ExifInterface API getAttribute(ExifInterface.TAG_GPS_LATITUDE,)getAttribute(ExifInterface.TAG_GPS_LONGITUDE)来检查文件是否设置了值。