问题标签 [ciimage]

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 投票
0 回答
624 浏览

uiscrollview - 当一个 ImageView 在 ScrollView 中时,使用 Core Image 合成 2 个 UIImageViews

我有UIScrollView一个UIImageView里面有一个。用户可以在 scrollView 内平移和缩放图像。

我在主视图中也有一个UIImageView(在滚动视图上方),用户可以在屏幕上移动该图像。

我正在使用 CISourceOverCompositing 将它们结合起来:

...但是当我将其设置为 a 时,图像的位置和比例已经丢失,CIImage并且前景图像始终位于左下角。

所以我尝试使用imageByApplyingTransform来移动前景图像的位置(最终我也必须应用缩放变换),但是我从 ImageView 中获取位置,但是坐标需要在背景图像的本机分辨率中本身......但是背景图像正在移动(我想这意味着我必须以ContentOffset某种方式考虑),并且背景图像具有一定的比例,而前景图像具有一定的比例......

似乎很奇怪,需要重新生成关于每个图像的不同比例、旋转和位置变量的所有转换......

这是我正在尝试做的基本思想(左侧位于主视图坐标中,而右侧位于本机图像坐标中)。

任何帮助都感激不尽!

谢谢!

总体规划

0 投票
3 回答
29837 浏览

ios - 从 CIImage 获取 CGImage

我有一个从 CIImage 加载的 UIImage:

tempImage = [UIImage imageWithCIImage:ciImage];

问题是我需要裁剪tempImage到一个特定CGRect的,我知道如何做到这一点的唯一方法是使用CGImage. 问题是在 iOS 6.0 文档中我发现了这个:

CG图像
If the UIImage object was initialized using a CIImage object, the value of the property is NULL.

A. 如何从 CIImage 转换为 CGImage?我正在使用这段代码,但我有内存泄漏(并且无法理解在哪里):

0 投票
3 回答
1936 浏览

ios - 从 CIImage 创建 UIImage 时颜色反转(iOS 6.0)

我一直在尝试大量不同的选项和技巧来让 UIImage 从 CIImage 正确构建。但是,每次我创建 CIImage 时,它​​的颜色似乎都被反转了。

我最近的代码是:

这会产生以下图像:

反转的彩色图像。

但是,构建这样的图像:

...产生以下图像:

在此处输入图像描述

我尝试了很多不同的方法来构建 CIImage。

这是因为在 iOS 中 CIImage 的像素格式是 ARGB 吗?(这似乎是目前 iOS6 上唯一可能的格式)

如果是这样,我怎样才能交换像素格式让这个 CIImage 看起来正常?



我在 git 上创建了一个项目 repo,显示了我尝试过的所有主要不同方式(不包括每种方式的变体)。有6种方法,前5种失败:

https://github.com/C4Code/CIImageTest

最后一种方法有效,但它真的很脏:

我正在从 UIImage 绘制到我自己的图形上下文中,并且因为它有效,所以我相信 CIImage 的本机实现可能存在错误。也就是说,从 UIImage 创建 CIImage 不起作用...同样,我唯一能想到的是 CIImage 在 ARGB 空间中,而 UIImage 不是...但是,我不知道如何解决这个问题?

这是一个错误吗?

0 投票
1 回答
458 浏览

objective-c - 撤消 CIImageAccumulator

我有这样的绘画应用程序女巫作品:

  • 在 mouseDown/mouseDragged 事件中,我使用 CIRadialGradient 在事件位置绘制一个点
  • 取 CIRadialGradient outputImage 并在 CISourceOverCompositing 过滤器中使用它作为 inputImage(开始时的 inputBackground 为空 CIImage)
  • 将CISourceOverCompositing outputImage设置为brushAccumulator图像(后面将brushAccumulator图像作为CISourceOverCompositing filter中的inputBackgroundImage)
  • 设置brushAccumulator 图像为CIBlendWithMask inputMaskImage 设置CIBlendWithMask outputImage 为mainImageAccumulator 图像绘制mainImageAccumulator 到屏幕

我想实现撤消方法。首先,我认为我可以使用brushAccumulator.image(CIImage)作为撤消对象(将其添加到mutableArray,然后在调用撤消方法时将brushAccumulator图像设置为mutableArray对象之一)但我发现:CIImage不是包含像素的图像,它只是构建它的一系列指令的结果,例如 CIFilter 的输出。因此,如果您复制 CIImage,您只需复制那些指令,修改后会修改输出。

所以我想我可以从brushAccumulator的图像中制作NSBitmapImageRep并将其存储到NSMutableArray。但是我在更新brushAccumulator 时遇到了问题。我将新的 CIImage 设置为由 NSMutableArray 中的 NSBitmapImageRep 之一制成的新 CIImage 作为brushAccumulator 图像,但brushAccumulator 图像不会改变。

当我的绘画应用程序基于 CIImageAccumulator(类似于 CIMicroPaint 示例代码)时,您能为我提供什么来实现撤消/重做效果?

0 投票
1 回答
450 浏览

c# - 将 CIImage 转换为 UIImage 后,AsJPEG().Save 不起作用

我正在使用 CIImage 的 ImageByCroppingToRect 函数来裁剪最初是 UIImage 的图像。庄稼起作用了。当我执行“originalImage.AsJPEG().Save”时也可以。我已经测试并确认它保存的文件是工作 JPEG。但是当我执行“croppedImage.AsJPEG().Save”时,我在其行上收到“System.NullReferenceException:对象引用未设置为对象的实例”错误。originalImage 和croppedImage 都是UIImages,唯一的区别是croppedImage 来自一个转换后的CIImage 进行了裁剪......但是为什么会导致这个错误呢?这是一个 UIImage 所以它应该可以工作,对吧?而且我知道croppedImage 中的图像存在是因为“view.Image = croppedImage;”行

以下是源代码,此链接是包含 jpg 图像的实际项目: https ://www.dropbox.com/s/erh0yrew8pyuye7/TestImageCrop.zip

0 投票
1 回答
501 浏览

ios - 添加贴纸时来自 CgImageRef 的 UIImage

最后一行返回一个 CGImageRef 对象。

我将值分配给最终图像,如下所示:

UIImage *finalImage = [UIImage ImageWithCGImageRef:cgImg];

但是我没有得到图像。任何想法为什么?任何帮助深表感谢。

0 投票
1 回答
2799 浏览

iphone - 我如何在 ciimage iOS 中绘制方形或圆形环绕眼睛和嘴巴

我是 iOS 编程新手,我搜索了很多核心图片链接、答案和教程,但我仍然不完全理解。我有一个测试应用程序,它有按钮,简单的东西,当我按下某个过滤器按钮时,我有图像,它会生成过滤器并显示它。

现在我想要一个按钮,它可以检测眼睛和嘴巴并在其周围绘制矩形或圆圈,无论什么颜色和什么颜色都没有关系。我来了,直到

现在我有一个问题(我不确定这是否是正确的开始)。请帮助我想知道下一步该怎么做..提前谢谢你

0 投票
1 回答
4672 浏览

ios - 裁剪 CMSampleBufferRef

我正在尝试将图像裁剪CMSampleBufferRef为特定大小。我正在做 5 个步骤 - 1.PixelBufferSampleBuffer2. 转换PixelBufferCIImage3. 裁剪CIImage4. 渲染CIImagePixelBuffer5. 附加PixelBufferSampleBuffer. 到目前为止,我在第 4 步遇到问题 - 将图像渲染回PixelBuffer(无法检查超出这一点)没有渲染到缓冲区(我使用相同的方法检查它CIImage imageWithCVPixelBuffer并获得 NULL 作为返回)。非常感谢任何提示或帮助。

0 投票
2 回答
1215 浏览

cgimage - CIBloom使图像更小

我正在使用 CIBloom 来模糊 a 中的一些文本CGImage,但正在发生的是 CIBloom 过滤器似乎使我的图像变得非常小

当过滤器内核变大时效果更差。我有点预料到这一点,但我需要一种方法来关闭它,或者一个公式来调整图像的大小,以便每个字母的大小与它最初的大小完全相同。我故意在源图像上留出边距。

CIBloom过滤器之前:

一个

CIBloom过滤器后:

在此处输入图像描述

模糊过滤器的代码:

我喜欢CIBloom过滤器,但我需要结果与我的原始图像大小相同,而不是下采样。

0 投票
1 回答
457 浏览

ios6 - 旋转CGPoints;CIVector CGAffineTransform?

我有 4 个 CGPoints 形成一个不规则的图形。如何将该图形旋转 90 度并获得新的 CGPoints?

FWIW,当图形是 CGRect 通过交换 origin.x 和 origin.y 以及宽度和高度时,我能够“伪造”这个。我是否需要做类似的事情(计算点之间的距离/方向)或者是否有可以应用于 CIVector 的 AffineTransform?

欢迎提示和/或指向教程/指南。

可跳过的项目背景:

用户将为文档拍照,应用程序将对它们进行 OCR。由于用户很难获得不倾斜的图像,我允许他们围绕文本主体创建一个 4 点图形,然后应用程序将其倾斜回矩形。传入的相机图像是 CIImages,因此它们的原点已经在左下角,因此必须从 UIView 旋转 4 点图形以匹配...