이미지의 LatLng를 변경하는 Android 프로그램을 설계하고 있습니다. 당신 만 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();
}
에 파일의 바이트를 복사 당신이 제어하는 파일 (예 : getCacheDir()) –
@AbdullahMufti :'InputStream'은'java.io'의 일부입니다. 일부 소스 (파일, HTTP 응답 등)의 데이터를 읽는 데 사용합니다. 당신은 당신이 제어하는 어떤 파일에'FileOutputStream'을 생성하고, 표준 자바 I/O를 사용하여'InputStream'에서'FileOutputStream'으로 바이트를 복사 할 수 있습니다. 작업이 끝나면 'Uri'가 가리키는 것과 같은 데이터를 포함하는 파일이 생성됩니다. 이제, 당신은 그 파일과 함께'ExifInterface'를 사용할 수 있고,'ExifInterface'는 파일에 저장할 수 있습니다. – CommonsWare
하나의 마지막 호의 : 내 코드에서 실수를 식별 할 수 있습니까? InputStream = getContentResolver(). openInputStream ((Uri) AddArray [i]); 파일 myFile = getCacheDir(); 파일 outFile = 새 파일 (myFile, String.valueOf (입력)); OutputStream os = 새 FileOutputStream (outFile.getAbsolutePath()); –