Reputation: 4575
Can anyone tell me how I can get the true width and height of an NSImage? I have noticed that images that are a higher DPI than 72 come through with inaccurate width and height with the NSImage.size parameters.
I saw this example on Cocoadev:
NSBitmapImageRep *rep = [image bestRepresentationForDevice: nil];
NSSize pixelSize = NSMakeSize([rep pixelsWide],[rep pixelsHigh]);
However bestRepresentationForDevice is deprecated on 10.6... what can I use as an alternative, the documentation doesn't offer a different method?
Upvotes: 4
Views: 2651
Reputation: 15013
Iterate through the image's representation looking for the one with the largest -size. Calling -bestRepresentationForRect:context:hints: should do this for you if you feed an extremely large rectangle.
Upvotes: 1
Reputation: 52231
@interface NSImage (Representation)
-(NSBitmapImageRep*)bitmapRepresentation;
@end
@implementation NSImage (Representation)
-(NSBitmapImageRep*)bitmapRepresentation {
for (id thing in self.representations) {
if (![thing isKindOfClass:[NSBitmapImageRep class]]) continue;
return (NSBitmapImageRep*)thing;
}
return nil;
}
@end
Upvotes: 0
Reputation: 313
Build your NSBitmapImageRep from the TIFF representation of the NSImage
NSBitmapImageRep* rep = [NSBitmapImageRep imageRepWithData:[image TIFFRepresentation]];
Upvotes: 5