Android. Добавление надписи и метаданных к фото.

Следующий метод нарисует на фото текущую дату и время в нижнем правом углу:

public static Bitmap signBitmap(Bitmap background) {
    background = background.copy(Bitmap.Config.ARGB_8888, true);
    Paint paint = new Paint();
    paint.setColor(Color.YELLOW);
    paint.setTextSize(18f);
    Date date = new Date();
    String dateString = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss", Locale.getDefault()).format(date);
    Canvas canvas = new Canvas(background);
    canvas.drawText(dateString, background.getWidth() - 180, background.getHeight() - 40, paint);
    return background;
}

Следующий метод добавляет метаданные к фото:

public static void writeExifToFile(File photo, double latitude, double longitude, String address, String version) {
try {
ExifInterface exif = new ExifInterface(photo.getCanonicalPath());
String stringLati = String.valueOf(latitude);
String stringLongi = String.valueOf(longitude);
exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE, stringLati);
exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE, stringLongi);
exif.setAttribute(ExifInterface.TAG_GPS_AREA_INFORMATION, address);
exif.setAttribute(ExifInterface.TAG_EXIF_VERSION, version);
exif.saveAttributes();
} catch (IOException e) {
e.printStackTrace();
}
}

Для того чтобы сохраненная информация отображалась не только на устройствах Android но и в свойствах файла при сохранении в Windows необходимо использовать не стандартный для системы Android класс ExifInterface, а добавить зависимость в файл gradle:

implementation 'androidx.exifinterface:exifinterface:1.3.1'

Print Friendly, PDF & Email

Добавить комментарий