Задать вопрос

Почему meta информация может теряться в bitmap?

Новичок в адроидинге.
Задача такова: взять изображение по uri, ресайзить его до разумных разделов, и отправить на сервер.
Наткнулся на такой момент, что мета информация теряется при ресайзе (ну или где-то около) . посмотрите плиз более опытные товарищи, в чем косяк?

is = cr.openInputStream(uri);
                Bitmap bm = BitmapFactory.decodeStream(is);
                bm = scaleImage(bm, 2000, false);
                ByteArrayOutputStream stream = new ByteArrayOutputStream();
                bm.compress(Bitmap.CompressFormat.PNG, 100, stream);
                byteArray = stream.toByteArray();
                // Потом прикрепляю этот массив к AsyncHttpClient
                params.put("image", new ByteArrayInputStream(byteArray));

Далее функция с просторов, она должна ресайзить изображение
public static Bitmap scaleImage(Bitmap realImage, float maxImageSize,
                                   boolean filter) {
        float ratio = Math.min(
                (float) maxImageSize / realImage.getWidth(),
                (float) maxImageSize / realImage.getHeight());

        int width = Math.round((float) ratio * realImage.getWidth());
        int height = Math.round((float) ratio * realImage.getHeight());

        Bitmap newBitmap = Bitmap.createScaledBitmap(realImage, width,
                height, filter);

        return newBitmap;
    }

Но на сервер приходит файл без мета информации. Гугл информации не дает. Ткните носом плиз, где теряется мета информация?
  • Вопрос задан
  • 2407 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
maaGames
@maaGames
Погроммирую программы
Потому что это не ресайз имеющегося изображения, а создание нового, на основе старого. Т.е. метаинформация осталось в исходном изображении, а в новый битмап её никто не скопировал.
Ответ написан
@Normanns
Для работы с EXIF-заголовками у android есть неплохой интерфейс:
import android.media.ExifInterface;
ExifInterface exif = new ExifInterface( filePath );

Я применял его для записи информации о координаха фотографии:
exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE, latitudeValue);
exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE,  longitudeValue);

После изменений все заголовки сохраняются в файл следующей командой:
exif.saveAttributes();
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
18 дек. 2024, в 12:39
1000 руб./за проект
18 дек. 2024, в 12:37
10000 руб./за проект
18 дек. 2024, в 12:22
5000 руб./за проект