ExifCopy.java 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package epson.common;
  2. import android.os.Build;
  3. import android.support.annotation.RequiresApi;
  4. import java.io.IOException;
  5. import java.util.ArrayList;
  6. import java.util.Arrays;
  7. import java.util.List;
  8. public class ExifCopy {
  9. private static final String[] COMMON_ATTRIBUTE_TAGS = {ExifInterface.TAG_DATETIME, ExifInterface.TAG_ORIENTATION, ExifInterface.TAG_WHITE_BALANCE, ExifInterface.TAG_EXPOSURE_TIME, ExifInterface.TAG_FLASH};
  10. public static boolean copyExif(String str, String str2) {
  11. List<String> tagList = getTagList();
  12. try {
  13. android.media.ExifInterface exifInterface = new android.media.ExifInterface(str);
  14. android.media.ExifInterface exifInterface2 = new android.media.ExifInterface(str2);
  15. for (String next : tagList) {
  16. String attribute = exifInterface.getAttribute(next);
  17. if (attribute != null) {
  18. exifInterface2.setAttribute(next, attribute);
  19. }
  20. }
  21. exifInterface2.saveAttributes();
  22. return true;
  23. } catch (IOException unused) {
  24. return false;
  25. }
  26. }
  27. @NonNull
  28. private static List<String> getTagList() {
  29. ArrayList arrayList = new ArrayList(Arrays.asList(COMMON_ATTRIBUTE_TAGS));
  30. if (Build.VERSION.SDK_INT >= 24) {
  31. arrayList.addAll(getAndroidMTagList());
  32. }
  33. return arrayList;
  34. }
  35. @RequiresApi(api = 24)
  36. @NonNull
  37. private static List<String> getAndroidMTagList() {
  38. return Arrays.asList(new String[]{ExifInterface.TAG_CUSTOM_RENDERED, ExifInterface.TAG_SCENE_CAPTURE_TYPE, ExifInterface.TAG_EXPOSURE_MODE, ExifInterface.TAG_BRIGHTNESS_VALUE, ExifInterface.TAG_CONTRAST, ExifInterface.TAG_SATURATION, ExifInterface.TAG_SHARPNESS, ExifInterface.TAG_GAIN_CONTROL, ExifInterface.TAG_ISO_SPEED_RATINGS, ExifInterface.TAG_EXPOSURE_BIAS_VALUE, ExifInterface.TAG_METERING_MODE, ExifInterface.TAG_SUBJECT_DISTANCE_RANGE, ExifInterface.TAG_DIGITAL_ZOOM_RATIO});
  39. }
  40. }