определить, является ли uiimage png или jpeg?

<p>в настоящее время я делаю первые шаги в разработке iphone через monotouch, я играю с <code>uiimage</code>, который я читаю из библиотеки фотографий.</p><p>чего я хочу добиться, так это получить необработанный байтовый массив (<code>byte[]</code>) изображения.</p><p>я знаю, что в monotouch есть оболочки <code>uiimagejpegrepresentation</code> и <code>uiimagepngrepresentation</code>. я также знаю, как их использовать. то, что я не знаю, это:</p><p>как мне решить, какую из этих двух функций вызвать?</p><p>то есть если исходное изображение является изображением jpeg, я не хочу получать его в формате png, но также в формате jpeg и наоборот.</p><p>есть ли способ сделать это, или я упускаю некоторые моменты по этому поводу?</p>

<p>если у вас есть <code>uiimage</code>, он может создавать jpeg или png с использованием <code>uiimagejpegrepresentation</code> или <code>uiimagepngrepresentation</code>. формат исходного изображения важен только тогда, когда из него создается uiimage (решает, какой <code>cfimage</code> поставщик его загрузит).</p><p>если для вашего приложения или алгоритма важно сохранить его в исходном формате, я думаю, что вы должны сохранить эту информацию, чтобы использовать ее при написании. я дважды проверил и не смог найти ничего, что рекламировало, из какого он формата.</p><p>собираетесь ли вы изменить изображение с помощью <code>uiimageview</code> или оно останется неизменным в вашем опыте? если он не изменился и вам просто нужен пользовательский интерфейс для выбора изображения, можете ли вы получить файл байтов? например, если вы показывали изображения только для выбора, а затем загружаете их на сервер или что-то еще, <code>uiimage</code> может быть только для просмотра и выбора, и если ваша структура данных запоминает, из какого файла она получена, вы можете вернуть биты обратно. диск и загрузка. если вы изменяете файл в представлении, то вы или пользователь должны решить, какой вывод (и, если jpeg, качество) изображения.</p>

<p>подготовить</p><pre><code>typedef ns\_enum(nsinteger, downloadimagetype) { downloadimagetypepng, downloadimagetypejpg }; @property (assign, nonatomic) downloadimagetype imagetype; </code></pre><p>обнаружение</p><pre><code>- (void)imagepickercontroller:(uiimagepickercontroller *)picker didfinishpickingmediawithinfo:(nsdictionary *)info { nsstring *comparestring = [[info objectforkey:uiimagepickercontrollerreferenceurl] absolutestring]; nsrange pngrange = [comparestring rangeofstring:@"png" options:nsbackwardssearch]; if (pngrange.location != nsnotfound) { comparestring = [comparestring substringfromindex:pngrange.location]; self.imagetype = downloadimagetypepng; nslog(@"%@", comparestring); } else { nslog(@"not png"); } nsrange jpgrange = [comparestring rangeofstring:@"jpg" options:nsbackwardssearch]; if (jpgrange.location != nsnotfound) { comparestring = [comparestring substringfromindex:jpgrange.location]; self.imagetype = downloadimagetypejpg; nslog(@"%@", comparestring); } else { nslog(@"not jpg"); } } </code></pre><p>использование</p><pre><code>if (self.imagetype == downloadimagetypepng) { } else if (self.imagetype == downloadimagetypejpg) { } </code></pre>