Как изменить данные EXIF ​​без сжатия изображения в Какао? - PullRequest
3 голосов
/ 06 ноября 2011

Я успешно использую CGImageSource для чтения изображения (в основном JPEG) и CGImageDestination для его обратной записи. Это работает, но мое изображение получается намного меньше, чем было раньше (изображение размером 3,9 МБ станет изображением размером 2,1 МБ).

Я играл с kCGImageDestinationLossyCompressionQuality , и, хотя он влияет на размер файла, я не понимаю масштаб, который он использует.

например. тот же файл 3.7Mb изменит свой размер на:

  • 1,9 МБ с качеством сжатия 0,7

  • 2,4 МБ с качеством сжатия 0,8

  • 3,0 МБ с качеством сжатия 0,9

  • 7,4 МБ с качеством сжатия 1,0

Я перепробовал все (с точностью до 6 десятичных знаков, используя дихотомию), чтобы найти место, где можно вернуться к этим волшебным 3,9 МБ, но он прыгает с 3,3 МБ до 7,4 МБ, и, кажется, нет способа заставить его остаться между этими двумя числами .

Есть ли какая-либо другая библиотека Objective C, которую я могу использовать для изменения данных EXIF, которая оставляет сжатие (и, следовательно, размер файла) одним?

1 Ответ

2 голосов
/ 15 ноября 2011

Используя CGImageDestination, вы создаете новое изображение, и очень трудно, чтобы размер вновь созданного изображения соответствовал исходному. (зависит от уровня сжатия).

Если вам нужно просто изменить метаданные исходного изображения, не меняя информацию об изображении, вам следует использовать другую библиотеку. Я знаю два из них, которые можно использовать в приложении какао:

  • libexif Библиотека C ++. Поддерживает написание jpgs. Лицензия LGPL.
  • exiv2 C ++. Поддерживает запись во множество форматов. Но это нужно платная лицензия, если вы используете ее в коммерческом приложении.

Другой вариант - использовать exiftool . Это Perl-сценарии, которые стали стандартом де-факто для изменения метаданных. Вы можете включить его в папку ресурсов вашего приложения и вызвать его с помощью NSTask, чтобы изменить метаданные изображений. Довольно легко сделать, и, безусловно, лучший инструмент из трех. (Только для Mac, не уверен, что вы нацелены на iphone или Mac)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...