objective-c - 如何调整 NSImage 的大小?

标签 objective-c macos jpeg nsimage

我有一个NSBitmapImageRep,它的大小是WxH

我创建了 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/

相关文章:

iphone - 如何访问和修改 UINavigationBar

objective-c - 在 IOS 中使用应用程序访问 token

iphone - 让 iPhone 应用程序与 OSX 应用程序通信

pdf - 是否可以在没有外部库的情况下从 PDF 中提取 tiff 文件?

linux - 如何在Linux控制台中删除.jpg文件

iphone - 如何在iOS中的UIGestureRecognizer中匹配图像形状?

ios - NSDictionary 的 NSArray 上的 NSPredicate

macos - Mac 标准/非管理员用户阅读登录历史记录?

javascript - 如何在 safari 应用程序和从 safari 应用程序扩展资源文件夹加载的 html 页面之间进行通信

delphi - 以可变帧率逐帧创建 Motion JPEG