NSImage DPI问题

时间:2011-01-20 15:17:07

标签: objective-c cocoa dpi nsimage

有谁能告诉我如何才能获得NSImage的真实宽度和高度?我注意到DPI高于72的图像通过NSImage.size参数得到的宽度和高度不准确。

我在Cocoadev上看到了这个例子:

NSBitmapImageRep *rep = [image bestRepresentationForDevice: nil];

NSSize pixelSize = NSMakeSize([rep pixelsWide],[rep pixelsHigh]);

然而,bestRepresentationForDevice在10.6上已弃用...我可以使用哪种替代方法,文档不提供不同的方法?

3 个答案:

答案 0 :(得分:4)

从NSImage的TIFF表示构建NSBitmapImageRep

NSBitmapImageRep* rep = [NSBitmapImageRep imageRepWithData:[image TIFFRepresentation]];

答案 1 :(得分:1)

遍历图像的表示,寻找具有最大-size的那个。调用-bestRepresentationForRect:context:hints:如果你输入一个非常大的矩形,你应该为你做这个。

答案 2 :(得分:0)

@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