Я работаю над приложением для Android, которое включает загрузку изображения jpeg
из внутреннего хранилища и сохранение его обратно во внутреннее хранилище.
Я загружаю растровое изображение изображения и сохраняю изображение, используя растровое изображение. imageBitmap.compress(Bitmap.CompressFormat.JPEG, 100, fileOutputStream)
Но при сохранении изображение сжимается (даже если я ничего не менял в изображении).
Как я могу загрузить и сохранить одно и то же изображение в формате jpeg, ничего не меняя на уровне пикселей?
Ищу способ писать попиксельно (наверное это единственное решение). Я нашел похожий способ - ссылка, но это не только не поддерживает тип файла как jpeg
, но и увеличивает размер файла в 6 раз . Хотя он поддерживает точные данные пикселей.
But in saving the image, it gets compressed (even if I did not change anything in the image).
Вы имеете в виду: если я сжимаю это растровое изображение в файл jpg, я получаю другой файл jpg. Верно. Теперь повторите с новым файлом jpg. Загрузите его и сожмите в новый файл jpg. Все файлы jpg имеют разный размер файла. Сделайте это десять раз и посмотрите, что произойдет. Вы знаете, что jpg — это алгоритм сжатия с потерями? - person blackapps   schedule 07.03.2021not only does not maintain the filetype as jpeg but also increases the file size 6 times.
Да, конечно, так как тогда все пиксели растрового изображения сохраняются в классическом файле .bmp. А растровые изображения известны тем, что занимают много памяти. Отсюда крик о сжатии, которое привело к .jpg. - person blackapps   schedule 07.03.2021AndroidBitmapUtil Android Bitmap Object To .bmp image file
Это не говорит о том, что он может читать файлы .bmp в битмап. Может это? Я полагаю, вы пробовали это. - person blackapps   schedule 07.03.2021jpeg
в качестве вывода. Несмотря на то, чтоjpeg
является сжатием с потерями, я считаю, что после фиксированного количества сжатий он вообще не сможет сжиматься. Я заметил, что после первого сжатия (при сохранении растрового изображения) размер значительно уменьшается, но после этого размер остается почти постоянным при каждом сжатии. Но все же пиксели (и коэффициенты DCT) зашифрованы. Должен быть способ обратить jpeg в растровое сжатие, чтобы получить исходное изображение. - person Lupin   schedule 08.03.2021that after a fix number of compressions, it should not be able to compress at all.
У вас есть растровое изображение, и оно сжато до изображения в формате jpg. Растровое изображение сохраняет то же разрешение, количество пикселей и объем памяти. И это растровое изображение всегда снова сжимается до jpg. - person blackapps   schedule 08.03.2021