问题标签 [cgbitmapcontextcreate]

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 回答
338 浏览

ios - 如何更改部分 UIImage 的颜色?

我有一张灰度图像,我在该图像的某些部分应用它的原始颜色,我已经实现了它。现在我想改变我在图像中应用原始颜色的那部分的颜色

我有这个: 原始图像

我想在这个转换: 结果图像

我尝试bitmapcontext了一切,但没有得到想要的结果。

有人知道吗?

0 投票
2 回答
552 浏览

swift - 将 PDF 转换为 CGImage 将图像变为负片

我有以下代码可以将 PDF 页面转换为 CGImage:

这确实将我的 PDF 页面转换为灰度位图。唯一的问题:结果CGImage的颜色是反转的(黑色变成白色,反之亦然)。我摆弄了参数,CGBitmapContextCreate但没有运气。

PS我添加了这段代码来将负数反转为正数:

这可行,但我当然希望首先得到正确的图像。

编辑:我想我一定是在做一些愚蠢的事情。当我像上面那样渲染并反转整个图片时,它看起来像

在此处输入图像描述

左边是Finder预览,右边是我的渲染。正如我现在注意到的那样,这会反转图像的某些部分。我尝试使用@Tricertops 代码并得到(上面/下面的黑色块来自其他PDF的列表)

在此处输入图像描述

显然,这具有正确的灰度值,但是有一些黑色蒙版覆盖了图片。左侧的纯文本现在不可见,但图像正确显示。

0 投票
2 回答
259 浏览

ios - 来自 CGBitmapContextCreate 的 CGContextDrawLayerInRect 失败 iPhone 7 Plus

我有一个 Objective C 项目,它在某一时刻从您的照片库或相机中拍摄一张照片,然后将它们切成小方块(瓷砖),并最终从切碎的方块中创建新的 UIImage 对象。

该代码在我的旧 iPhone 5 和 iPad Mini 2 上完美运行。

然而,在我的 iPhone 7 Plus 上,它会产生空白输出(而不是我输入的部分内容)。iPad Mini 2 和 iPhone 7 Plus 都运行 iOS 10.3.3,并且都是 64 位设备。

完整的功能在这里:

这在创建 CGContextRef 时调用了一个外部部分,bmpContext -- newCGBitmapContextWithSize :tileSize:withData。该位的代码如下:

起初我认为是“ drawInRect ”调用不知何故不起作用,现在我确信情况并非如此。我认为它与CGBitmapContextCreate调用有关。

谢谢!

0 投票
1 回答
801 浏览

ios - CGBitmapContextCreate 为某些宽度和高度的像素返回 NULL

我有以下代码来创建新的位图图形上下文。

newRect.size.width 是 UIImage 的原始宽度除以 2 的结果。 newRect.size.height 是 UIImage 的原始高度除以 2 的结果。

但是对于一些尺寸为 {3000, 2002},{3024, 4032},{4032, 3024} 的 UIImage 是可以的,并且返回位图上下文。

但是对于一些尺寸为 {1242, 2208} 的 UIImage。通常这些是我设备的屏幕截图并返回 NULL 值。

这是失败的 UIImage 的日志. 这是成功 UIImage 的日志.

有没有人可以帮助解决我的问题。谢谢。

0 投票
0 回答
365 浏览

ios - 在 iOS 中导出超大图像

我正在开发一个应用程序,它在 UIScrollView 中使用 CATiledLayer 支持的视图,让用户在任意大的画布上工作。画布基本上包含用户可以着色、选择、移动等的大块图表。我覆盖draw(_ rect: CGRect)以在视图上绘制。

所有这些都运行良好 - CATiledLayer 在用户处理图表时可以很好地降低内存消耗。滚动和缩放效果很好。

我现在需要做的是允许用户将他们的图表副本导出到相机胶卷,但我遇到了内存问题并且应用程序崩溃了。我尝试了多种方法来将视图捕获到图像中。该视图在 UIScrollView 中并不完全可见

这是我当前生成图像的方式:

由于图表可以是任意大小,这意味着它们可以变得非常大。我需要一种能够以某种方式导出像这样的大图像的方法。示例错误:

我看到的大多数帖子都涉及如何阅读大图像(如照片)并显示它。我无法找到任何有关如何进行反向操作并获取视图图像的信息。有没有一种方法可以将视图的较小图块生成到文件上,然后将其拼接在一起并让他们访问生成的文件?谢谢!

0 投票
1 回答
114 浏览

swift - Swift 版本获取错误的像素数据,但 Object-c 版本使用方法“CGBitmapContextCreate”从同一图像中获取正确的像素数据

我不敢相信自己的眼睛,它们基本上是相同的代码,只是将Object-c代码转换为swift代码,但是Object-c代码总是得到正确的答案,但是swift代码有时会得到正确的答案,有时会得到错误的。

斯威夫特演绎:

Objective-C 版本:

可在https://github.com/tuchangwei/Pixel

如果你得到相同的答案,请运行更多次。

0 投票
1 回答
84 浏览

ios - 通过 CGBitmapContextCreate 获取像素 RGB 错误

我遇到了一个奇怪的问题。我正在使用 CGBitmapContextCreate 从图像中获取原始像素数据,然后修改指定位置的像素颜色。但是,我发现当我得到一个像素的 RGBA 时,alpha 等于 1,一切正常,但如果 alpha 小于 1,则 RGB 是错误的,它是一种较暗的颜色。谁能告诉我为什么,这让我发疯...

这是我的代码,你可以在这里获取测试图片

图片

非常感谢你们!

0 投票
1 回答
117 浏览

objective-c - Swift 和 Objective-C 应用程序中不同的 UIImage RGB 数据输出

我正在研究图像处理框架并使用此代码读取 RGB 数据:

如果我创建新的 Swift 项目和新的 Objective-C 项目并使用相同的代码(使用 Objc 项目的桥头文件),我会得到不同的结果,例如:

它会在进一步处理中导致许多不同的结果。我尝试使用 Objective-C 代码并使用 CGBitmapContextCreate() 读取数据,但得到完全相同的结果。它在两个应用程序中显示相同的 ColorSpace,我尝试手动将其设置为 DeviceRGB 和 sRGB,但没有任何运气。

我必须将 Objc 输出与与 Swift 应用程序具有完全相同结果的 Android 应用程序进行匹配。

更新。我尝试过的第二种解决方案是为 Objective-C 编写另一个代码,它返回与 Swift 不匹配的完全相同的结果: