问题标签 [cgbitmapcontext]

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.

0 投票
1 回答
950 浏览

c++ - 黑白图形上下文

我在 Quartz/Core-graphics 工作。我正在尝试创建一个黑白、每像素 1b 的图形上下文。

我目前有一个带有灰度图像(实际上是黑白的)的 CGImageRef。我想把它画成一个黑白的 BitmapContext,这样我就可以把它拿出来并用 CCITT-group 4 压缩它。(由于某种原因,Quartz 不会让你以除 LZW 之外的任何 TIFF 格式保存)。

所以,我需要每像素 1 位的数据。我认为绘制到 1bpp 上下文中可以做到这一点。但是,它不会让我创建上下文:

有比灰色更小的色彩空间吗?

0 投票
1 回答
1547 浏览

xamarin.ios - 使用 MonoTouch Core Graphics 的应用程序神秘地崩溃了

我的应用启动时带有一个视图控制器和一个由按钮和子视图组成的简单视图。当用户触摸按钮时,子视图会填充滚动视图,显示列标题、行标题和电子表格的单元格。为了绘制单元格,我使用 CGBitmapContext 来绘制单元格,生成图像,然后将图像放入显示单元格的滚动视图中包含的图像视图中。

当我在 iPad 上运行该应用程序时,它可以很好地显示单元格,并且滚动视图让用户可以毫无问题地在电子表格中滚动。如果用户第二次触摸该按钮,电子表格将重新绘制并继续正常工作,但是,如果用户第三次触摸该按钮,则应用程序崩溃。应用程序输出窗口中没有异常信息显示。

我的第一个想法是连续的按钮按下耗尽了所有可用内存,所以我覆盖了视图控制器中的 DidReceiveMemoryWarning 方法并使用断点来确认该方法没有被调用。我的下一个想法是 CGBitmapContext 没有被释放,并寻找与 Objective C 的 CGContextRelease() 函数等效的 Monotouch。我能找到的最接近的是我调用的 CGBitmapContext 实例方法 Dispose(),但没有解决问题。

为了释放尽可能多的内存(以防我以某种方式耗尽内存而没有触发警告),我尝试在每次完成使用 CGBitmapContext 时强制进行垃圾收集。这使问题变得更糟。现在程序会在第一次显示电子表格后立即崩溃。这让我想知道垃圾收集器是否以某种方式收集了在屏幕上继续显示图形所必需的东西。

我将不胜感激有关进一步调查这些崩溃原因的途径的任何建议。我已经包含了 SpreadsheetView 类的源代码。相关的方法是 DrawSpreadsheet(),当按钮被触摸时调用。

感谢您在此问题上提供的帮助。

斯蒂芬·阿什利

0 投票
1 回答
643 浏览

cocoa - Cocoa + Quartz Newbie:获取 NSImage 中像素的颜色并在屏幕外绘图

我正在尝试为我的 Cocoa(Mac,而不是 iOS)应用程序创建自定义颜色选择器,但遇到了一些麻烦。我对计算机图形和绘图的各种模式已经足够熟悉了,但我是 Cocoa 的新手,我认为问题基本上是在其多层图形技术中迷失方向。

我正在尝试实现的是一个颜色选择器,它停靠在一个更大的侧边栏视图中,所以我认为最好自己绘制它而不是使用标准浮动面板。(我有充分的理由;不必提及与 Apple 的 HIG 不同的警告。)在研究检索 NSImage(在本例中为 colorWheel.PNG)上单击的像素颜色的最佳方法时,我发现它是最好的进入核心图形并将图像绘制到我自己的位图上下文中。

......这就是我成功来的原因。我已经成功地创建了上下文,但我不确定从这里去哪里以及这是否是矫枉过正。我想我正在寻找的是对这些类链接在一起的层次结构的可靠解释,以及如何最好地创建我正在寻找的效果。在此应用程序的许多部分中,离屏绘图将很有用,我很想更好地理解它。

提前致谢。

0 投票
1 回答
2959 浏览

ios - iOS倒坐标乱象

所以我正在使用 CGBitmapContext 使软件 blitter 适应 iOS。我将数据写入位图,然后使用 CoreGraphics 函数在 CGBitmapContext 上写入文本。软件 blitter 使用左上原点,而 CoreGraphics 函数使用左下原点。因此,当我使用 (0, 0) 处的 blitter 绘制图像时,它会出现在左上角。当我在 (0, 0) 处使用 CG 绘制文本时,它出现在左下角,并且未反转。是的,我已经阅读了有关反转坐标的所有其他问题,并且我正在对生成的 CG 图像执行此操作以在视图中正确显示它。也许一个代码示例会有所帮助......

如何混合坐标系?如何使用 ULC 原点将文本正面朝上绘制?

0 投票
1 回答
672 浏览

core-graphics - 使用CGContextDrawImage时的海报化效果,浮动CGBitmapContext

要从 CGImage 检索像素值,我使用 CGContextDrawImage (如下所述: 如何从 UIImage (Cocoa Touch) 或 CGImage (Core Graphics) 获取像素数据?)。唯一的区别是我创建了 128 bpp 浮动组件上下文,而不是通常的 32 bpp 上下文。从使用选项 kCGImageSourceShouldAllowFloat 创建的 CGImageSource 获得的源 CGImage。通过这种方式,我希望能够访问与我的位图上下文颜色空间匹配的浮点像素值,并将它们用于进一步的图像处理。问题是生成的图像数据似乎正在失去动态范围。它可以在阴影、纯蓝天区域看到。它们变得轮廓分明,缺乏细节。一些调查表明问题发生在 CGContextDrawImage (源 CGImage 包含完整的动态范围,通过 CGImageDestination 保存它证明了这一点)和 CGContextDrawImage 上下文内容变得分色后。

经过更多调查后,我发现了这一点:http: //lists.apple.com/archives/quartz-dev/2007/mar/msg00026.html 这使我得出结论,问题不在我的代码中,而在核心图形中,或者那是预期的行为。

我的问题是:使用核心图形从图像中获取浮点数据的正确方法是什么?

0 投票
1 回答
1062 浏览

xcode - iOS sdk,从无符号字符数组渲染图像,CGBitmapContextCreate 返回 NULL

我有一个具有以下值的unsigned char* 数据,如在 xcode 中调试时所见,

\xc1\xc1\xc1\xc1\xc1\xc1\xc1\xc0\x84\x03\x03\x02\x03\x02\x03\x03\x03\x02\x02\x03\x02\x03\x02\x02\x03 \x02\x02\x02\x02\x03\x03\x03\x03\x03\x02\x02\x03\x03\x03\x02\x02\x03\x02\x02\x02\x02\x03\x03\x03\x02 \x02\x02\x02\x03\x02\x03\x02\x03\x02\x03\x02\x03\x02\x03\x02\x02\x02\x03\x03\x03\x03\x03\x02\x03\x02 \x03\x02\x03\x03\x02\x02\x03\x03\x03\x02\x02\x02\x02\x02\x03\x02\x02\x03\x02\x03\x02\x02\x03\x03\x03

这是二维码的数据数组。

符号数据表示为包含宽度*宽度 uchars 的数组。每个 uchar 代表一个模块(点)。如果 uchar 的低位为 1,则对应的模块为黑色。

在上述情况下,宽度为177

我在 CGBitmapContextCreate 中尝试了各种组合,但似乎总是得到 NULL。

请指教。

您的帮助将不胜感激。

0 投票
0 回答
2088 浏览

iphone - CGBitmapContextCreate 中的错误

我正在尝试从 sampleBufferData 创建 UIImage 以及控制台中的内容

:CGBitmapContextCreate:无效数据字节/行:对于 8 个整数位/分量、3 个分量、kCGImageAlphaPremultipliedFirst,应至少为 1920。
: CGBitmapContextCreateImage: 无效的上下文 0x0

这是我的代码

0 投票
2 回答
783 浏览

iphone - iPhone:视网膜显示将字体写入 UIImage

Objective-C 答案很好,我使用 MonoTouch 作为参考。

我在 UIImage 上写文本。Retina 以断断续续的方式显示字体。看起来像素翻了一番,我猜这就是正在发生的事情。如何将清晰的字体写入 UIImage?

在此处输入图像描述

0 投票
0 回答
486 浏览

iphone - iPhone - 使用 CGBitmapContextCreate 作为 Opengl 纹理创建的图像

我想CGBitmapContextCreate用 texture->data 调用来创建一个CGContextRef,并CGImageRef通过CGBitmapContextCreateImage(上下文)创建一个。

但是,创建的图像并不像预期的那样:(

创建自CGBitmapContextCreateImage

在此处输入图像描述

实际的(略有不同,因为我用另一台相机拍摄):

在此处输入图像描述

代码: ( texture.bytesPerPixel = 2)

完整代码:

http://ihome.ust.hk/~tm_lksac/OpenGLSprite.m

应用程序通常调用- (void)drawSelfIfNeeded:(BOOL)需要更新应用程序中的纹理。但我想对纹理进行“截图”并将其保存UIImage为进一步的图像处理。

0 投票
2 回答
1084 浏览

xamarin.ios - “无效句柄”创建 CGBitmapContext

我遇到了 CGBitmapcontext 的问题。创建 CGBitmapContext 时出现错误消息“无效句柄”。

这是我的代码:

谢谢;