Мне нужно создать строковое представление base64 объекта какао NSImage. Каков наилучший способ справиться с этим, документация на Apple, по-видимому, немного коротка по этому вопросу (или я просто не могу ее найти). Кодировка Base64 кажется довольно сложной извне.NSImage to Base64
Любая помощь будет очень оценена.
Приветствия Alex
EDIT
NSArray *keys = [NSArray arrayWithObject:@"NSImageCompressionFactor"];
NSArray *objects = [NSArray arrayWithObject:@"1.0"];
NSDictionary *dictionary = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
NSImage *image = [[NSImage alloc] initWithContentsOfFile:[imageField stringValue]];
NSBitmapImageRep *imageRep = [[NSBitmapImageRep alloc] initWithData:[image TIFFRepresentation]];
NSData *tiff_data = [imageRep representationUsingType:NSPNGFileType properties:dictionary];
NSString *base64 = [tiff_data encodeBase64WithNewlines:NO];
Я предполагаю, что Алекс не хочет base64 кодирования изображения для его собственных целей, но для удовлетворения контракта какого-либо получателя, например веб-службы. В этом случае он должен будет использовать base64 именно то, что ожидает веб-сервис (возможно, данные JPG или PNG). Я сомневаюсь, что существует много предположений о различных способах кодирования изображения, но, возможно, Алекс подтвердит то или другое. – danielpunkass
Эй, ребята, я думаю, что кодировка base64 работает правильно, используя код от dribin.org, но в то время как Wordpress принимает и создает файл, а не образ. http://alexmillsdesign.files.wordpress.com/2009/06/quickicon5.jpg Я считаю, что я не получаю нужные данные от объекта NSImage, поэтому я изменил свой код, который находится в редакции моего исходного вопроса. Я новичок в программировании изображений, где я ошибаюсь? –
1. Используйте именованные константы (NSImageCompressionFactor, а не @ "NSImageCompressionFactor"). 2. Используйте экземпляр NSNumber, а не строку, содержащую десятичное представление. 3. Не важно, потому что PNG не поддерживает NSImageCompressionFactor. 4. Вы создаете и загружаете PNG-данные, а не JPEG. Либо используйте .png как расширение имени файла, либо создайте и загрузите данные JPEG, а не PNG. 5. Если вы загрузите это, вы обнаружите, что это данные base64. Может быть, вам действительно не нужно кодировать base64? –