问题标签 [nsbitmapimagerep]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
image - 如何将 256 色调色 RGBA 图像数据转换为 NSImage
我是一名新手开发人员,我需要你的帮助,这对你来说可能是微不足道的。
我有这种像素格式的图像数据:256 色调色 RGBA。它来自FFmpeg (PIX_FMT_PAL8)
,它是这样解释的:
PIX_FMT_RGB32 以特定于字节序的方式处理。RGBA 颜色组合为:
(A << 24) | (R << 16) | (G << 8) | 乙
这在小端 CPU 架构上存储为 BGRA,在大端 CPU 上存储为 ARGB。
当像素格式为调色RGB(PIX_FMT_PAL8)时,调色后的图像数据存储在AVFrame.data[0]中。
调色板在 AVFrame.data[1] 中传输,长度为 1024 字节(256 个 4 字节条目),其格式与上述 PIX_FMT_RGB32 中的格式相同(即,它也是特定于字节序的)。另请注意,存储在 AVFrame.data[1] 中的各个 RGB 调色板组件应在 0..255 范围内。
AVFrame 结构包含uint8_t *data[4]
andint linesize[4]
并且它们被简单地描述为:
uint8_t *data[4]
= 指向图片平面的指针- 给出了四个组件,仅此而已。
- 最后一个组件是 alpha
int linesize[4]
= 每行的字节数
我有包含所有需要数据的 AVFrame 结构,但我不知道如何处理它。我需要从这个图像数据创建一个 NSImage 。
我怎样才能做到这一点?
macos - NSBitmapImageRep 转 RGB 效率高
我正在为 10.5+ 开发我的第一个 mac osx cocoa 应用程序,其中我有一个 CVImageBufferRef(使用 QTKit 捕获),我需要通过 TCP 套接字将此图像传输到客户端应用程序。客户端应用程序需要 RGB 值。所以这就是我目前正在做的事情(我目前的解决方案根据需要工作,但使用大量 CPU)
CVImageBufferRef --> NSBitmapImageRep --> NSData --> 然后通过 TCP Socket 将 NSData 传输到客户端应用程序,在客户端我有以下代码来获取 RGB:
如果 CVImageBufferRef 可以转换为一个完美的 RGB 值数组,否则我需要一个有效的解决方案将 NSBitmapImageRep 转换为 RGB 值。
cocoa - 使用 CALayer 的 renderInContext: 方法和 geometryFlipped
我有一个 CALayer ( containerLayer
),我希望在将NSBitmapImageRep
数据保存为平面文件之前将其转换为 a 。containerLayer
将其geometryFlipped
属性设置为 YES,这似乎导致了问题。最终生成的 PNG 文件可以正确呈现内容,但似乎没有考虑翻转的几何图形。我显然在寻找 test.png 来准确表示左侧显示的内容。
下面附上问题的屏幕截图和我正在使用的代码。
作为参考,这里是实际保存生成的代码NSBitmapImageRep
:
objective-c - 是否可以制作一个 24 bpp 且没有 alpha 通道的 NSBitmapImageRep?
我不太了解预乘的阿尔法。
我需要一个没有 alpha 通道的 NSBitmapImageRep(我不需要特定的 bpp)。
我的问题是这段代码给了我错误:
错误:CGBitmapContextCreate:不支持的参数组合:8 个整数位/分量;24 位/像素;三分量色彩空间;kCGImageAlphaNone; 640 字节/行。
好的,我知道这种组合不受支持,但我需要这样的东西,但我找不到解决方案。
cocoa - 如何从 NSBitmapImageRep 计算“bytesPerRow”
我想了解在构建 NSBitmapImageRep 时如何计算“bytesPerRow”(在我的情况下,将浮点数组映射到灰度位图)。
澄清这个细节将有助于我理解内存是如何从浮点数组映射到字节数组(0-255,无符号字符;这些数组都没有显示在下面的代码中)。
Apple 文档说,这个数字是“根据图像的宽度、每个样本的位数,如果数据是网格配置,则计算每个像素的样本数”。
我在遵循这个“计算”时遇到了麻烦,所以我设置了一个简单的循环来凭经验找到结果。以下代码运行良好:
并产生结果:
所以我们看到字节/行以 64 字节增量跳跃,即使 Nx 一直递增 1 到 320(我没有显示所有这些 Nx 值)。另请注意,对于此讨论,Nx = 320(最大值)是任意的。
那么从为字节数组分配和映射内存的角度来看,“每行字节数”是如何从第一原理计算出来的呢?上面的结果是否可以使来自单个扫描线的数据在“字”长度边界(我的 MacBook Pro 上为 64 位)上对齐?
感谢您提供任何见解,无法想象这是如何工作的。
cocoa - cocoa:如何绘制放大版的 NSBitmapImageRep?
我想用NSBitmapImageRep在代码中构造一个64x64像素的精灵,然后把它画到屏幕上,炸的很大。结果将是屏幕上非常大的“像素”。想想老派马里奥兄弟或我的世界。我怎样才能做到这一点?
编辑我想绘制到这个屏幕外位图,然后稍后在 CALayer 上渲染它
cocoa - 可可:读取 NSImage 的像素颜色
我有一个NSImage
. 我想NSColor
在某个 x 和 y 处读取像素。Xcode 似乎有一个colorAtX:y:
方法 on NSImage
,但这会导致崩溃,说 NSImage 没有这样的方法。我已经看到了一些示例,其中您创建一个NSBitmapImageRep
并在其上调用相同的方法,但我无法成功地将我的 NSImage 转换为NSBitmapImageRep
. NSBitmapImageRep
由于某种原因,上面的像素有所不同。
必须有一个简单的方法来做到这一点。不可能这么复杂。
cocoa - 如何为显示的 IKImageBrowserView 获取 NSBitmapImageRep?
我有一个两格NSSplitView,它的一个子视图是IKImageBrowserView。在使用 CATransition 为NSSplitView设置动画之前,我需要捕获它的位图以交换到位。
usingcacheDisplayInRect
不会捕获IKImageBrowserView内容,但会捕获其他窗格的内容。我认为这可能与IKImageBrowserView拥有自己的图层树有关。
有人可以确认这是真的吗?
关于如何获取视图内容的位图副本有什么建议吗?
renderInContext
不会帮助我,我不认为,因为IKImageBrowserView没有透露引用它的presentationLayer的方法——如果它甚至有一个。
我认为ImageKit是CALayers/CAOpenGLLayers和alchemy的组合。
谢谢。
cocoa - NSBitmapImageRep 中的亚像素抗锯齿
有没有办法在NSBitMapImageRep
亚像素抗锯齿中绘制文本?文本绘制在不透明的白色背景上,我尝试使用该CGContextSetShouldSmoothFonts
功能,但这似乎没有帮助。
NSImage
当我在using中绘制时,我可以使文本平滑工作-[NSImage lockFocus]
,但是在 Retina 显示器上运行它时这并不可靠。
objective-c - 将 PDF 的每一页提取为图像:设置图像的大小
我在下面的代码中设置输出图像的大小时遇到了一些问题(我发现这是另一个 StackOverflow 问题的答案)。
我需要将图像输出为小预览和高分辨率图像。但无论如何,它只能输出 596 x 842。
我尝试使用 setSize 方法更改大小,但它只更改图像的大小,在大空白区域中留下一个小图像。我无法让它正确扩展。
有人有想法吗?
提前致谢。
注意:这是一个 Mac OSX 应用程序。