我有一个NSBitmapImageRep
,它的大小是W
xH
。
我创建了 NSImage
并调用了 addRepresentation:
。然后我需要调整 NSImage
的大小。
我尝试了 setSize
方法,但它不起作用。我该怎么办?
最佳答案
编辑: 由于这个答案仍然是公认的答案,但在编写时没有考虑到 Retina 屏幕,所以我将直接链接到线程下方更好的解决方案:Objective-C Swift 4
因为 Paresh 的方法完全正确但自 10.8 以来已弃用,我将在下面发布 10.8 的工作代码。不过,所有功劳都归功于 Paresh 的回答。
- (NSImage *)imageResize:(NSImage*)anImage newSize:(NSSize)newSize {
NSImage *sourceImage = anImage;
[sourceImage setScalesWhenResized:YES];
// Report an error if the source isn't a valid image
if (![sourceImage isValid]){
NSLog(@"Invalid Image");
} else {
NSImage *smallImage = [[NSImage alloc] initWithSize: newSize];
[smallImage lockFocus];
[sourceImage setSize: newSize];
[[NSGraphicsContext currentContext] setImageInterpolation:NSImageInterpolationHigh];
[sourceImage drawAtPoint:NSZeroPoint fromRect:CGRectMake(0, 0, newSize.width, newSize.height) operation:NSCompositingOperationCopy fraction:1.0];
[smallImage unlockFocus];
return smallImage;
}
return nil;
}
关于objective-c - 如何调整 NSImage 的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11949250/