gpt4 book ai didi

objective-c - 如何在 OSX 应用程序中绘制像素?

转载 作者:行者123 更新时间:2023-12-03 17:39:43 24 4
gpt4 key购买 nike

我有一个表示像素数据的文件 - 它采用自定义格式,因此我需要读取表示组成图像的每个像素的 RGB 数据的各个字节。我知道该怎么做。

我应该使用什么类来指定组成图像的各个像素,然后让我在应用程序的窗口中渲染它

我假设存在某种“图像”对象,我可以在其中指定各个像素?

这是我认为我需要做的:1. 在 Xcode 中创建一个 Cocoa 应用程序。2.然后在默认创建的窗口中,我必须能够添加某种可以在其中渲染“图像”的“ View ”。3. 在该“图像”中,我应该能够指定代表“图像”的矩形中每个像素的 RGB 值。

我从哪里开始?我可以轻松地使用 Objective-C 进行编码,但我从未编写过带有 UI 的应用程序,或者必须编写自定义绘图代码的地方。

最佳答案

如果字节采用 CoreGraphics 识别的格式,您可以简单地将字节读入 NSData 等缓冲区,并从中创建位图图像。您可以显示该图像。例如:

unsigned char *fftFrames = (unsigned char *) [imageData bytes]; // data from a FFT operation on sound; grayscale in original; i want color.

unsigned char *imgData[3];
imgData[0] = &fftFrames[(int)start];
imgData[1]=imgData[0]+((int)width*(int)height);
imgData[2]=imgData[1]+((int)width*(int)height);

NSBitmapImageRep *sonagramImageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:imgData
pixelsWide:*size
pixelsHigh:height
bitsPerSample:8
samplesPerPixel:3
hasAlpha:NO
isPlanar:YES
colorSpaceName:NSDeviceRGBColorSpace
bytesPerRow:width bitsPerPixel:8];

在上面的示例中,数据来自 fft 操作的灰度数据,然后我复制原始数据以填充红色、绿色和蓝色,以便稍后执行一些漂亮的 CIFilter 操作。最后我得到这样的图像:http://www.ecoobs.com/img/her-bcAn2-Ft3.png (左窗口中色彩鲜艳的图像就是通过这种方式产生的,称为声谱图)。

它直接绘制到 NSView 中。

以上只是一种方法。使用 Quartz 可以非常类似地完成此操作。方法是一样的。

关于objective-c - 如何在 OSX 应用程序中绘制像素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21605771/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com