海神


获取NSImage图片的准确大小

2011-10-26
#cocoa

我在做微博程序显示图片的时候,发现一个问题。有的时候显示的图片比实际大小小,调试了一下发现NSImage保存的size比真实的大小小。搜索了一下发现在NSImage的representations里面保存的大小才是真实的像素大小。

于是写了一个方法来修复:

- (void)fixSize
{ 
  NSImageRep *imageRep = [[self representations] lastObject];
  [self setSize:NSMakeSize(imageRep.pixelsWide, imageRep.pixelsHigh)];
}

今天看到一个人的一篇文章,原来这种方法也不是最安全的,因为NSImage可能并不存在NSBitmapImageRep,最好的解决方法是:

NSImage *image = [NSImage imageNamed:@"image"]; 
NSBitmapImageRep *rep = [NSBitmapImageRep imageRepWithData:[image TIFFRepresentation]]; 
NSSize size = NSMakeSize([rep pixelsWide], [rep pixelsHigh]); 
[image setSize: size]; 

blog comments powered by Disqus