0
画像のLatLngを変更するためのアンドロイドプログラムを設計しています。画像ウリは、あなたがそれを使用しているとして、唯一InputStream
を持っており、それがあなたを持続する方法がない、発生しNougatのURIを使用してExifInterfaceオブジェクトを使用して画像のLatLngを変更できません
例外が "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();
}
へのファイルのバイトをコピーuは、この行を詳しく説明してくださいすることができます はいくつかにそのURIによって識別されるコンテンツのコピーを作成するためのInputStreamを使用(例えば、getCacheDir()で) –
@AbdullahMufti: 'InputStream'は' java.io'の一部です。何らかのソース(ファイル、HTTPレスポンスなど)からデータを読み込むために使用します。あなたがコントロールするいくつかのファイルで 'FileOutputStream'を作成し、標準のJava I/Oを使ってバイトを' InputStream'から 'FileOutputStream'にコピーすることができます。あなたが終わったら、あなたは 'Uri'が指しているものと同じデータを含むファイルを持っています。これで、そのファイルで 'ExifInterface'を使うことができ、' ExifInterface'でファイルに保存することができます。 – CommonsWare
1つの最後の恩恵:私のコードで間違いを特定できますか? InputStream = getContentResolver()。openInputStream((Uri)AddArray [i]); ファイルmyFile = getCacheDir(); ファイルoutFile =新しいファイル(myFile、String.valueOf(in)); OutputStream os = new FileOutputStream(outFile.getAbsolutePath()); –