如何从jpg文件编辑元数据



我正在尝试从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")); 

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

首先,对路径进行硬编码。从不硬编码路径。使用Context(如getExternalFilesDir())或Environment(如getExternalStoragePublicDirectory())上的方法,而不是硬编码根路径。

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

最新更新