Potrzebuję utworzyć łańcuchową reprezentację base64 obiektu kakaowego NSImage. Jaki jest najlepszy sposób, aby to zrobić, dokumentacja Apple wydaje się być trochę krótka na ten temat (lub po prostu nie mogę go znaleźć). Kodowanie Base64 wydaje się dość skomplikowane z zewnątrz.NSImage to Base64
Każda pomoc będzie bardzo ceniona.
Cheers 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];
zgaduję, że Alex nie chce base64 kodowania obrazu dla własnych celów, ale aby spełnić warunki umowy z jakimś odbiorcą, np usługa internetowa. W tym przypadku będzie musiał baz64 dokładnie to, czego oczekuje serwis internetowy (prawdopodobnie dane JPG lub PNG). Wątpię, czy istnieje duża potrzeba spekulacji na temat różnych sposobów kodowania obrazu, ale być może Alex potwierdzi jedno lub drugie. – danielpunkass
Hej, chłopaki, myślę, że kodowanie base64 działa poprawnie, używając kodu z dribin.org, ale podczas gdy wordpress akceptuje i tworzy plik, nie jest obrazem. http://alexmillsdesign.files.wordpress.com/2009/06/quickicon5.jpg Uważam, że nie otrzymuję właściwych danych z obiektu NSImage, więc zmieniono mój kod, który jest w edycji mojego pierwotnego pytania. Jestem nowy w programowaniu obrazów, gdzie się mylę? –
1. Użyj nazwanych stałych (NSImageCompressionFactor, a nie @ "NSImageCompressionFactor"). 2. Użyj instancji NSNumber, a nie łańcucha zawierającego reprezentację dziesiętną. 3. Nie to ma znaczenia, ponieważ PNG i tak nie obsługuje NSImageCompressionFactor. 4. Tworzysz i ładujesz dane PNG, a nie JPEG. Użyj rozszerzenia .png jako rozszerzenia nazwy pliku lub utwórz i prześlij dane JPEG, a nie PNG. 5. Jeśli to pobierzesz, przekonasz się, że to dane base64. Może faktycznie nie musisz go kodować64? –