Я реализую функцию обрезки в приложении Android для файлов JPG с очень строгими требованиями:
Вопрос Манипуляции с изображением без удаления его данных EXIF немного похож, но, к сожалению, в первом решении используется javax.imageio.ImageIO, которого нет на Android, а во втором решении используется слишком большая библиотека, 690 КБ.
Есть ли способ сделать это, желательно со стандартными классами Android?
@MohammedAtif: К сожалению, я не специалист по JPG, но я считаю, что кадрирование JPG без потерь можно выполнить без распаковки/повторного сжатия, что было бы лучше с точки зрения использования памяти и ЦП. Но ответы, которые не используют эту технику, все еще в порядке, поэтому не стесняйтесь публиковать :-)
Возможно, подойдет lljtran порт для Java? Не знаю размер библиотеки, но вы, вероятно, могли бы вырвать только те части, которые вам нужны.
@haraldK: Замечательная находка! Это, конечно, лучше, чем заново реализовать алгоритмы JPG самостоятельно. Не стесняйтесь публиковать ответ :-)




Вряд ли вы найдете такую вещь в продаже. Вы бы ограничили себя посевами вдоль границ MCU. Размер MCU зависит от частоты дискретизации различных компонентов.
Это не тривиальная задача.
Да точно, кадрирование будет только по границам MCU, вы правильно поняли вопрос.
Я не пробовал, но есть ли у них какие-либо проблемы с производительностью при извлечении данных exif из изображения, преобразовании их в обрезанное растровое изображение и сжатии обратно путем добавления извлеченных данных exif?