Ik heb in cocoa een NSImageView waarin een plaatje staat. Dit plaatje sla ik op als jpeg file. Echter de file werd kleiner dan de originele file, met duidelijk kwaliteitsverlies. Dit kan voorkomen worden door op te slaan met de property NSImageCompressionFactor. Nu kan ik die factor gemakkelijk op 1.0 (hoogste kwaliteit) zetten, maar dan wordt de file weer veel groter dan het origineel. Deze code gaat het om:
NSBitmapImageRep *jpegImage = [[[imageView image] representations] objectAtIndex:0];
NSNumber *factor = [NSNumber alloc];
factor = [jpegImage valueForProperty:NSImageCompressionFactor];
NSDictionary *dict = [NSDictionary dictionaryWithObject:factor forKey:NSImageCompressionFactor];
NSData *data = [jpegImage representationUsingType:NSJPEGFileType properties:dict];
[data writeToFile:bestandsnaam atomically:YES];
De regel factor = ... levert nil op, in plaats van een float tussen 0.0 en 1.0. Deze nil geeft in de NSDictionary weer een fout waardoor er helemaal niks wordt opgeslagen. Google is ook verdacht stil over dit onderwerp.
Kan iemand mij vertellen waar mijn denkfout zit?