HI I'm trying to use NSImage's CGImageForProposedRect method to scale an image but it's not doing it. I gat back an image the same size as the original. I've double-checked all my math and that seems to be right. Here's how it's being used anyone see where I'm going wrong?
- (BOOL) createThumbnail:(NSString *) inSource maxDimension:(int) inMax saveTo:(NSString *) inDest { NSImage *img = [[NSImage alloc] initWithContentsOfFile: inSource]; BOOL result = NO; //NSLog(@"img: %@", img); if (img != nil) { float width = [img size].width, height = [img size].height, scaledWidth = (width < height) ? inMax * (width / height) : inMax , scaledHeight = (width < height) ? inMax : inMax * (height / width); // tried both with and without next two lines, no difference in output size [img setScalesWhenResized: YES]; [img setSize: NSMakeSize(scaledWidth, scaledHeight)]; NSRect scaledRect = NSMakeRect(0, 0, scaledWidth, scaledHeight); //NSLog(@"scaledRect: %@", [NSValue valueWithRect: scaledRect]); // Ultimately I want to write the scaled image to a file. Should I set a context here? If so, which one and how? CGImageRef imgRef = [img CGImageForProposedRect: &scaledRect context: NULL hints: NULL]; if (imgRef != NULL) { NSURL *destURL = [NSURL fileURLWithPath: inDest]; NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInt: 72], kCGImagePropertyDPIHeight, [NSNumber numberWithInt: 72], kCGImagePropertyDPIWidth, nil]; CGImageDestinationRef destRef = CGImageDestinationCreateWithURL((CFURLRef) destURL, kUTTypeJPEG, 1, NULL); if (destRef != NULL) { // create the image CGImageDestinationAddImage(destRef, imgRef, (CFDictionaryRef) options); CGImageDestinationFinalize(destRef); CFRelease(destRef); if ([[NSFileManager defaultManager] fileExistsAtPath: inDest]) result = YES; } else NSLog(@"Error: Failed to create image destination for: %@", inSource); CFRelease(imgRef); } else NSLog(@"Error: Failed to create image ref for: %@", inSource); [img release]; } else NSLog(@"Error: Failed to load image: %@", inSource); return result; } _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com