Существует множество способов сделать это, в зависимости от ваших потребностей, но «современный» метод - использовать фабричный метод класса NSImage
:
+ (instancetype)imageWithSize:(NSSize)size flipped:(BOOL)drawingHandlerShouldBeCalledWithFlippedContext drawingHandler:(BOOL (^)(NSRect dstRect))drawingHandler;
Этот метод принимает параметр блока с кодом, который превращает ваши данные в изображение, так же, как если бы вы рисовали его на экране для пользовательской реализации NSView
.(Если вы никогда не делали этого раньше, начните с Руководство по рисованию какао: «Виды и рисование» , а также «Графические контексты» .
Заводской методявляется умным и (если разрешение вашего экрана не изменится) будет вызываться только один раз, а полученное изображение будет кэшировано в представлении NSImage
.
Следующая альтернатива (которая на самом деле может быть проще для вас) должен преобразовать ваш массив int
в буфер RGBA (или любой другой), представляющий значения пикселей в изображении. Этот процесс начинается с создания определенного NSBitmapImageRep
(это объект «представления» - каждый NSImage
являетсянабор из одного или нескольких представлений).
Это потребует некоторых исследований различных форматов пиксельного буфера, но это также довольно легко сделать. После того, как вы построили свое 2D-представление буфера пикселей, вы можете повернуть это непосредственнов NSImage
.
Эти и другие методы объясняются в Руководстве по рисованию какао: «Создание объектов NSImage» .