这是我为测试编写的源代码:
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大小不是真正的大小与一些图片?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)