В Android при декодировании растрового изображения из фотографии на телефоне данные EXIF в оригинале теряются. Я отправляю это Bitmap
на свой сервер через сокет и хочу повторно присоединить отсутствующие данные EXIF к отправляемым данным.
У меня есть некоторый код, который загружает объект Bitmap
из MediaStore
и сжимает его в байтовом массиве для подготовки к отправке через сокет:
Bitmap bitmap = ...
ByteArrayOutputStream stream = new ByteArrayOutputStream(bitmap);
bitmap.compress(CompressFormat.JPEG, 70, stream);
byte[] input = stream.toByteArray();
Я хочу использовать ExifInterface
чтобы получить метаданные EXIF в исходном jpeg на SD-карте и каким-то образом добавить его в исходящий байтовый массив таким образом, чтобы я мог извлечь jpeg со всеми правильными EXIF на сервере. сторона (надеюсь, не делая этого на сервере). До сих пор мне удалось использовать ExifInterface
для чтения всех данных EXIF:
String path = ... //bitmap file path
ExifInterface exif = new ExifInterface(path);
... = exif.getAttribute(...)
РЕДАКТИРОВАТЬ: Оптимально, я хотел бы найти решение, которое не использует библиотеки. Если бы я мог просто получить индексы байтового массива исходного jpeg, которые содержат EXIF, и добавить/добавить эти байты в байтовый массив, созданный bitmap.compress(...)
это было бы лучше всего.