2014-12-31 5 views
0

Я пытаюсь создать объект NSBitmapImageRep с 32 бит на выборку и альфа-канал (всего 128 бит на пиксель).Пытается создать 32 bpc NSBitmapImageRep, получая ошибки с ошибками

Мой код выглядит следующим образом:

let renderSize = NSSize(width: 640, height: 360) 
let bitmapRep = NSBitmapImageRep(bitmapDataPlanes: nil, pixelsWide: Int(renderSize.width), pixelsHigh: Int(renderSize.height), bitsPerSample: 32, samplesPerPixel: 4, hasAlpha: true, isPlanar: false, colorSpaceName: NSCalibratedRGBColorSpace, bytesPerRow: 16 * Int(renderSize.width), bitsPerPixel: 128) 
println(bitmapRep) //prints "nil" 
println(16 * Int(renderSize.width)) //prints 10240 
println() 

//So what does a 'valid' 32bpc TIFF file with an alpha channel look like? 
let imgFile = NSImage(named: "32grad") //http://i.peterwunder.de/32grad.tif 
let imgRep = imgFile?.representations[0] as NSBitmapImageRep 
println(imgRep.bitsPerSample) //prints 32 
println(imgRep.bitsPerPixel) //prints 128 
println(imgRep.samplesPerPixel) //prints 4 
println(imgRep.bytesPerRow) //prints 10240 
println(imgRep.bytesPerRow/Int(imgFile!.size.width)) //prints 16 

Это появляется в консоли после выполнения строки 2:

2014-12-31 04: 49: 16,639 PixelTestBed [4413: 2775703] Противоречивые набор значений для создания NSBitmapImageRep

Что здесь происходит? Почему я не могу вручную создать NSBitmapImageRep с теми же значениями, что и у TIFF-изображения?

Кстати, я не могу загрузить изображение здесь, потому что imgur исказил бы качество изображения. В конце концов, это 3,7 МБ 32bpc TIFF с альфа-каналом.

ответ

1

Вы пытаетесь присвоить 32 BitsPerSample, который находится вне диапазона, указанного в документации:

бит

Число битов, используемых для указания на один пиксель в одном компоненте данные. Предполагается, что все компоненты имеют одинаковые биты на выборку. бит должен быть одним из следующих значений: 1, 2, 4, 8, 12 или 16.

NSBitmapImageRep Class Reference

+0

Угадай я должен сделать с 16 битами на выборку. Бу, Apple. –