Update the NSImage code to just use an NSBitmapImageRep for determining the correct pixel width and height

Thanks to @indragiek for the tip.
This commit is contained in:
David Keegan 2011-11-18 09:59:29 -08:00
parent fbf9186d10
commit bfb6b35a3e

View file

@ -212,13 +212,11 @@ static dispatch_queue_t image_request_operation_processing_queue() {
#elif __MAC_OS_X_VERSION_MIN_REQUIRED
- (NSImage *)responseImage {
if (!_responseImage && [self isFinished]) {
self.responseImage = [[[NSImage alloc] initWithData:self.responseData] autorelease];
// The size of an NSImage can sometimes be incorrect, so make a CGImage which is more
// like a single pixel-based representation so it is the correct size, and then
// set the size based on what the CGImage says it is.
CGImageRef cgimage = [[NSBitmapImageRep imageRepWithData:self.responseData] CGImage];
[self.responseImage setSize:NSMakeSize(CGImageGetWidth(cgimage), CGImageGetHeight(cgimage))];
// Ensure that the image is set to it's correct pixel width and height
NSBitmapImageRep *bitimage = [[NSBitmapImageRep alloc] initWithData:self.responseData];
self.responseImage = [[[NSImage alloc] initWithSize:NSMakeSize([bitimage pixelsWide], [bitimage pixelsHigh])] autorelease];
[self.responseImage addRepresentation:bitimage];
[bitimage release];
}
return _responseImage;