osx – NSImage大小不是真正的大小与一些图片?

osx – NSImage大小不是真正的大小与一些图片?,第1张

概述我看到有时NSImage大小不是真正的大小(有些图片),而CIImage的大小总是真实的。我正在用这个 image进行测试。 这是我为测试编写的源代码: NSImage *_imageNSImage = [[NSImage alloc]initWithContentsOfFile:@"<path to image>"];NSSize _dimensions = [_imageNSImage s 我看到有时NSImage大小不是真正的大小(有些图片),而CIImage的大小总是真实的。我正在用这个 image进行测试。

这是我为测试编写的源代码:

NSImage *_imageNSImage = [[NSImage alloc]initWithContentsOffile:@"<path to image>"];NSSize _dimensions = [_imageNSImage size];[_imageNSImage release];NSLog(@"WIDth from CIImage: %f",_dimensions.wIDth);NSLog(@"Height from CIImage: %f",_dimensions.height);NSURL *_myURL = [NSURL fileURLWithPath:@"<path to image>"];CIImage *_imageCIImage = [CIImage imageWithContentsOfURL:_myURL];NSRect _rectFromCIImage = [_imageCIImage extent];NSLog(@"WIDth from CIImage: %f",_rectFromCIImage.size.wIDth);NSLog(@"Height from CIImage: %f",_rectFromCIImage.size.height);

输出为:

那怎么可以呢?也许我在做错事?

解决方法 NSImage size方法返回与屏幕分辨率相关的大小信息。要获取实际文件映像中的大小,您需要使用NSImageRep。您可以使用表示方法从NSImage获取NSImageRep。或者,您可以直接像这样创建一个NSBitmAPImageRep子类实例:

NSArray * imageReps = [NSBitmAPImageRep imageRepsWithContentsOffile:@"<path to image>"];NSInteger wIDth = 0;NSInteger height = 0;for (NSImageRep * imageRep in imageReps) {    if ([imageRep pixelsWIDe] > wIDth) wIDth = [imageRep pixelsWIDe];      if ([imageRep pixelsHigh] > height) height = [imageRep pixelsHigh];  }NSLog(@"WIDth from NSBitmAPImageRep: %f",(CGfloat)wIDth);NSLog(@"Height from NSBitmAPImageRep: %f",(CGfloat)height);

该循环考虑到某些图像格式可能包含多于一个图像(例如TIFF)。

您可以使用以下内容创建此大小的NSImage:

NSImage * imageNSImage = [[NSImage alloc] initWithSize:NSMakeSize((CGfloat)wIDth,(CGfloat)height)];[imageNSImage addRepresentations:imageReps];
总结

以上是内存溢出为你收集整理的osx – NSImage大小不是真正的大小与一些图片?全部内容,希望文章能够帮你解决osx – NSImage大小不是真正的大小与一些图片?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1039532.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存