Я потратил более 24 часов, пытаясь выполнить то, что я думал, было бы простой задачей, но я действительно борюсь с этим.Я очень неопытен в Swift и Xcode, поэтому вам придется терпеть меня, если я совершу глупую ошибку.
В принципе, я хочу иметь возможность создавать изображение размером 64X64 пикселей, а затемвозможность изменять цвет / прозрачность отдельных пикселей.Затем я хочу иметь возможность сохранить его в виде файла (желательно PNG, но любой формат, который может открыть MacOS, вполне подходит).
Я пробовал различные методы, но ни один из них не доходил до точки, гдеЯ действительно могу сказать, что не так, и почему они терпят неудачу.Вот где я сейчас нахожусь:
Сначала я инициализирую пустое изображение.
var baseskin = NSBitmapImageRep(bitmapDataPlanes: nil,
pixelsWide: Int(64),
pixelsHigh: Int(64),
bitsPerSample: 8,
samplesPerPixel: 3,
hasAlpha: false,
isPlanar: false,
colorSpaceName: NSColorSpaceName.calibratedRGB,
bytesPerRow: 0, bitsPerPixel: 0)!
Затем я окрашиваю 5X5 пиксельный участок в красный (Это действительно ужасный код, это был простоподразумевается как тест):
baseskin.setColor(NSColor(red: 255, green: 0, blue: 0, alpha: 0.5), atX: Int(1), y: Int(1))
baseskin.setColor(NSColor(red: 255, green: 0, blue: 0, alpha: 0.5), atX: Int(2), y: Int(1))
baseskin.setColor(NSColor(red: 255, green: 0, blue: 0, alpha: 0.5), atX: Int(3), y: Int(1))
baseskin.setColor(NSColor(red: 255, green: 0, blue: 0, alpha: 0.5), atX: Int(4), y: Int(1))
baseskin.setColor(NSColor(red: 255, green: 0, blue: 0, alpha: 0.5), atX: Int(5), y: Int(1))
baseskin.setColor(NSColor(red: 255, green: 0, blue: 0, alpha: 0.5), atX: Int(1), y: Int(2))
baseskin.setColor(NSColor(red: 255, green: 0, blue: 0, alpha: 0.5), atX: Int(2), y: Int(2))
baseskin.setColor(NSColor(red: 255, green: 0, blue: 0, alpha: 0.5), atX: Int(3), y: Int(2))
baseskin.setColor(NSColor(red: 255, green: 0, blue: 0, alpha: 0.5), atX: Int(4), y: Int(2))
baseskin.setColor(NSColor(red: 255, green: 0, blue: 0, alpha: 0.5), atX: Int(5), y: Int(2))
baseskin.setColor(NSColor(red: 255, green: 0, blue: 0, alpha: 0.5), atX: Int(1), y: Int(3))
baseskin.setColor(NSColor(red: 255, green: 0, blue: 0, alpha: 0.5), atX: Int(2), y: Int(3))
baseskin.setColor(NSColor(red: 255, green: 0, blue: 0, alpha: 0.5), atX: Int(3), y: Int(3))
baseskin.setColor(NSColor(red: 255, green: 0, blue: 0, alpha: 0.5), atX: Int(4), y: Int(3))
baseskin.setColor(NSColor(red: 255, green: 0, blue: 0, alpha: 0.5), atX: Int(5), y: Int(3))
baseskin.setColor(NSColor(red: 255, green: 0, blue: 0, alpha: 0.5), atX: Int(1), y: Int(4))
baseskin.setColor(NSColor(red: 255, green: 0, blue: 0, alpha: 0.5), atX: Int(2), y: Int(4))
baseskin.setColor(NSColor(red: 255, green: 0, blue: 0, alpha: 0.5), atX: Int(3), y: Int(4))
baseskin.setColor(NSColor(red: 255, green: 0, blue: 0, alpha: 0.5), atX: Int(4), y: Int(4))
baseskin.setColor(NSColor(red: 255, green: 0, blue: 0, alpha: 0.5), atX: Int(5), y: Int(4))
baseskin.setColor(NSColor(red: 255, green: 0, blue: 0, alpha: 0.5), atX: Int(1), y: Int(5))
baseskin.setColor(NSColor(red: 255, green: 0, blue: 0, alpha: 0.5), atX: Int(2), y: Int(5))
baseskin.setColor(NSColor(red: 255, green: 0, blue: 0, alpha: 0.5), atX: Int(3), y: Int(5))
baseskin.setColor(NSColor(red: 255, green: 0, blue: 0, alpha: 0.5), atX: Int(4), y: Int(5))
baseskin.setColor(NSColor(red: 255, green: 0, blue: 0, alpha: 0.5), atX: Int(5), y: Int(5))
Наконец, я пытаюсь сохранить его на рабочем столе:
var imageProps = [NSBitmapImageRep.PropertyKey.interlaced: NSNumber(value: true)]
var imageData = baseskin.representation(using: NSBitmapImageRep.FileType.png, properties: imageProps) as NSData?
imageData?.write(toFile: "/Users/cvieira/Desktop/skin.png", atomically: true)
Программа собирается и работает просто отлично, но изображение никогда не появляется на моемрабочий стол.Это вывод программы, который мне кажется абсолютно бессмысленным.Вот неполный фрагмент этого кода, так как остальная часть, кажется, постоянно повторяет эти ошибки:
2019-06-25 11:09:53.787613-0400 Magician[10601:85751662] Unrecognized colorspace number -1
2019-06-25 11:09:53.799779-0400 Magician[10601:85751662] IIONumber:190: IIONumber -- 'num' is not a CFNumberRef
2019-06-25 11:09:53.799805-0400 Magician[10601:85751662] uint32Num:287: CFNumberGetValue/uint32_t failed
2019-06-25 11:09:54.895736-0400 Magician[10601:85751662] *** CFMessagePort: bootstrap_register(): failed 1100 (0x44c) 'Permission denied', port = 0x14143, name = 'com.apple.ink.private.0569298635'
See /usr/include/servers/bootstrap_defs.h for the error codes.
Я использую Xcode 10.2.1
Это кажется довольно простой задачей, хотя сотни поисков онлайн заставили меня знать где.Любая помощь будет принята с благодарностью.