W systemie Android podczas dekodowania mapy bitowej ze zdjęcia w telefonie dane EXIF w oryginale zostaną utracone. Wysyłam tę mapę bitową do mojego serwera przez gniazdo i chciałbym ponownie dołączyć brakujące dane EXIF do wysyłanych danych.Jak dołączyć metadane EXIF do serializowanej bitmapy w systemie Android?
mam jakiś kod, który ładuje obiekt Bitmap z Mediastore i spręża je do tablicy bajtów w ramach przygotowań do wysłania go na gnieździe:
Bitmap bitmap = ...
ByteArrayOutputStream stream = new ByteArrayOutputStream(bitmap);
bitmap.compress(CompressFormat.JPEG, 70, stream);
byte[] input = stream.toByteArray();
chcę użyć ExifInterface dostać w EXIF metadane w oryginalnym jpeg na karcie SD i jakoś dodać to do wychodzącej tablicy bajtów w taki sposób, żebym mógł wyodrębnić jpeg z wszystkimi poprawnymi EXIF po stronie serwera (miejmy nadzieję, bez robienia tego na serwerze). Do tej pory udało mi się użyć ExifInterface aby odczytać wszystkie dane EXIF:
String path = ... //bitmap file path
ExifInterface exif = new ExifInterface(path);
... = exif.getAttribute(...)
EDIT: Optymalnie, chciałbym znaleźć rozwiązanie, które nie korzysta z bibliotek. Gdybym tylko mógł uzyskać indeksy tablicy bajtów oryginalnego jpeg, które zawierają EXIF i poprzedzić/dołączyć te bajty do tablicy bajtów wyprodukowanych przez bitmap.compress(...)
, byłoby najlepiej.
Czy uda się dodanie informacji EXIF do tablicy bajtów? – Vikas