首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在Swift中创建NSBitmapImageRep

无法在Swift中创建NSBitmapImageRep
EN

Stack Overflow用户
提问于 2014-11-17 18:04:43
回答 1查看 3K关注 0票数 3

我有一个用xcode 6.1创建的osx项目,我想用它来训练一下SWIFT的使用。

在我的一个视图中,我尝试创建一个NSBitMapImageRep,如下所示:

代码语言:javascript
复制
class BitmapView : NSView {
var image: NSBitmapImageRep!

override func awakeFromNib() {
    var blub = NSBitmapImageRep(bitmapDataPlanes: nil,
        pixelsWide: Int(self.frame.size.width),
        pixelsHigh: Int(self.frame.size.height),
        bitsPerSample: 8,
        samplesPerPixel: 1,
        hasAlpha: false,
        isPlanar: false,
        colorSpaceName: NSCalibratedRGBColorSpace,
        bytesPerRow: 0, bitsPerPixel: 0)!

    //test()
}}

但是,每次我尝试运行它时,都会得到以下错误:

代码语言:javascript
复制
Inconsistent set of values to create NSBitmapImageRep fatal error: unexpectedly found nil while unwrapping an Optional value

我想这是因为bitmapDataPlanes是零的。但它是一个可选的值,根据文档,允许为NULL。但是,传递NSNull()并不能编译。

有人能告诉我我要通过什么吗?o_O

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-17 19:32:02

这个错误实际上是相当描述性的--您为初始化程序提供了一组不一致的值。具体来说,samplesPerPixel值1不能支持RGB颜色空间,这是您在colorSpaceName中指定的。From here

samplesPerPixel:每个像素的数据组件或样本的数量。此值包括颜色组件和覆盖组件(如果存在的话)。有意义的值范围从1到5。有青色、洋红色、黄色和黑色(CMYK)颜色成分的图像加上覆盖分量的spp值为5;没有覆盖分量的灰度图像的spp值为1。

因此,您只需将每个像素的样本更改为3:

代码语言:javascript
复制
var blub = NSBitmapImageRep(bitmapDataPlanes: nil,
    pixelsWide: Int(100),
    pixelsHigh: Int(100),
    bitsPerSample: 8,
    samplesPerPixel: 3,
    hasAlpha: false,
    isPlanar: false,
    colorSpaceName: NSCalibratedRGBColorSpace,
    bytesPerRow: 0, bitsPerPixel: 0)!
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26978985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档