如何编辑jpg文件中的元数据

时间:2015-07-09 15:54:09

标签: android metadata jpeg exif

我正在尝试从jpg加载Exif元数据。我正在使用ExifInterface类。 但是,当我尝试获取一些标签,例如ImageWidth或ImageLength我得到0或null。

我从jpg获取元数据的方法:

String ReadExif(String file){
    String exif="Exif: " + file;
    try {
        ExifInterface exifInterface = new ExifInterface(file);

        exif += "\nIMAGE_LENGTH: " + exifInterface.getAttribute(ExifInterface.TAG_IMAGE_LENGTH);
        exif += "\nIMAGE_WIDTH: " + exifInterface.getAttribute(ExifInterface.TAG_IMAGE_WIDTH);
        exif += "\n DATETIME: " + exifInterface.getAttribute(ExifInterface.TAG_DATETIME);
        exif += "\n TAG_MAKE: " + exifInterface.getAttribute(ExifInterface.TAG_MAKE);
        exif += "\n TAG_MODEL: " + exifInterface.getAttribute(ExifInterface.TAG_MODEL);
        exif += "\n TAG_ORIENTATION: " + exifInterface.getAttribute(ExifInterface.TAG_ORIENTATION);
        exif += "\n TAG_WHITE_BALANCE: " + exifInterface.getAttribute(ExifInterface.TAG_WHITE_BALANCE);
        exif += "\n TAG_FOCAL_LENGTH: " + exifInterface.getAttribute(ExifInterface.TAG_FOCAL_LENGTH);
        exif += "\n TAG_FLASH: " + exifInterface.getAttribute(ExifInterface.TAG_FLASH);
        exif += "\nGPS related:";
        exif += "\n TAG_GPS_DATESTAMP: " + exifInterface.getAttribute(ExifInterface.TAG_GPS_DATESTAMP);
        exif += "\n TAG_GPS_TIMESTAMP: " + exifInterface.getAttribute(ExifInterface.TAG_GPS_TIMESTAMP);
        exif += "\n TAG_GPS_LATITUDE: " + exifInterface.getAttribute(ExifInterface.TAG_GPS_LATITUDE);
        exif += "\n TAG_GPS_LATITUDE_REF: " + exifInterface.getAttribute(ExifInterface.TAG_GPS_LATITUDE_REF);
        exif += "\n TAG_GPS_LONGITUDE: " + exifInterface.getAttribute(ExifInterface.TAG_GPS_LONGITUDE);
        exif += "\n TAG_GPS_LONGITUDE_REF: " + exifInterface.getAttribute(ExifInterface.TAG_GPS_LONGITUDE_REF);
        exif += "\n TAG_GPS_PROCESSING_METHOD: " + exifInterface.getAttribute(ExifInterface.TAG_GPS_PROCESSING_METHOD);

        Toast.makeText(MainActivity.this,
                "finished",
                Toast.LENGTH_LONG).show();

    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        Toast.makeText(MainActivity.this,
                e.toString(),
                Toast.LENGTH_LONG).show();
    }

    return exif;
} 

我的方法叫:

textView.setText(ReadExif("/Storage/sdcard0/file.jpg")); 

我不知道我做错了什么。你能帮帮我吗?

1 个答案:

答案 0 :(得分:0)

首先,您正在硬编码路径。 永远没有硬编码路径。使用Context上的方法(例如getExternalFilesDir())或Environment(例如getExternalStoragePublicDirectory())代替硬编码根路径。

其次,你很可能硬编码错误的路径,因为我还没有看到根目录中有大写字母的设备(例如,Storage)。