Сжатие изображения в Android теряет качество, когда изображение снимается с камеры телефона

Я использую этот метод для сжатия изображения https://gist.github.com/ManzzBaria/c3af85b708fee49d55f7

но мои изображения теряют качество после сжатия. Хуже, когда изображение взято с телефона и сжато.

Пожалуйста, дайте мне знать, где я делаю неправильно.


person Android_Developer    schedule 08.02.2016    source источник
comment
Этот код в основном масштабирует изображение до меньшего размера. Это не то же самое, что сжатие изображения (хотя это тоже происходит, в строке 121 ). Можете ли вы уточнить, что именно вы хотите сделать?   -  person kwinkunks    schedule 08.02.2016
comment
@kwinkunks Я пытаюсь масштабировать изображение, а также уменьшить размер изображения перед загрузкой на сервер.   -  person Android_Developer    schedule 09.02.2016
comment
Уменьшить размер изображения (в пикселях) или размер файла (в байтах)?   -  person kwinkunks    schedule 09.02.2016


Ответы (2)


Уменьшение размера изображения приводит к удалению пикселей, что снижает разрешение изображения. Конечно, файл также становится меньше. Если вы сохраняете в формате JPEG высокой четкости (скажем, 95%), это может быть все, что вам нужно для уменьшения размера файла.

Уменьшение размера файла методом без потерь (например, PNG) позволит уменьшить размер файла без потери качества — отсюда и название. Уменьшение зависит от изображения: изображение с большим количеством одинаковых пикселей, например скриншот этой страницы, будет существенно сжато.

Использование метода с потерями (например, обычное сжатие JPEG) приведет к еще меньшему размеру файла, но вы заплатите за это сокращение потерей качества. Большинство методов сохранения файлов JPEG позволяют вам выбрать точность, часто по умолчанию 80%, которая контролирует качество результирующего изображения; это строка, которая делает это в коде, который вы разместили:

scaledBitmap.compress(Bitmap.CompressFormat.JPEG, 80, out);

Опять же, достигнутое вами уменьшение обратно пропорционально сложности изображения, а также этому параметру точности.

Вот сообщение в блоге, которое я написал о выборе форматов изображений: Как выбрать формат изображения. Этот тоже стоит прочитать.

В ответе @Gavriel есть больше хороших ссылок на сжатие с потерями и без потерь.

person kwinkunks    schedule 09.02.2016
comment
Извините, kwinkunks, на самом деле проблема в том, что когда я нажимаю на изображение и получаю путь к изображению из своего приложения, качество изображения снижается. Не знаю почему. Чтобы получить путь к изображению, установив изображение в растровое изображение. Я делаю что-то не так? - person Android_Developer; 10.02.2016
comment
Откуда берутся изображения с пониженным качеством? Если они были сохранены кодом, который вы разместили, то вот ваш ответ. Или они откуда-то еще? - person kwinkunks; 10.02.2016