我正在设计一个Android程序来更改LatLng图像。图像Uri在数组中,代码如下
发生的异常说
"ExifInterface does not support saving attributes for the currrent input"
InputStream in = getContentResolver().openInputStream((Uri)AddArray[i]);
ExifInterface ei = new ExifInterface(in);
ei.setAttribute(TAG_GPS_LATITUDE, "80/1,35/1,4091/100");
ei.setAttribute(TAG_GPS_LATITUDE_REF, "N");
ei.setAttribute(TAG_GPS_LONGITUDE, "45/1,1/1,4390/100");
ei.setAttribute(TAG_GPS_LONGITUDE_REF, "E");
try {
ei.saveAttributes();
} catch (Exception e) {
Toast.makeText(getApplicationContext(), e.getMessage().toString(), Toast.LENGTH_LONG).show();
}
} catch (IOException e) {
Toast.makeText(getApplicationContext(), "Something went wrong" + e.getMessage(), Toast.LENGTH_LONG).show();
}
答案 0 :(得分:0)
ExifInterface
,正如您使用它一样,只有InputStream
,因此无法保留您的更改。
你需要:
使用InputStream
将Uri
标识的内容复制到您控制的某个文件中(例如,在getCacheDir()
中)
对该文件使用ExifInterface
,保存对该文件的更改
在openOutputStream()
上使用ContentResolver
获取OutputStream
标识的内容Uri
,然后将文件的字节复制到OutputStream
}}