gpt4 book ai didi

iphone - 应用 CIFIlter 后设置 UIImageView 内容模式

转载 作者:技术小花猫 更新时间:2023-10-29 10:44:45 27 4
gpt4 key购买 nike

感谢您的关注。

这是我的代码

 CIImage *result = _vignette.outputImage;
self.mainImageView.image = nil;
//self.mainImageView.contentMode = UIViewContentModeScaleAspectFit;
self.mainImageView.image = [UIImage imageWithCIImage:result];
self.mainImageView.contentMode = UIViewContentModeScaleAspectFit;

此处 _vignette 已正确设置滤镜,并且图像效果已正确应用于图像。

我使用的是分辨率为 500x375 的源图像。我的 imageView 几乎具有 iPhone 屏幕的分辨率。因此,为了避免拉伸(stretch),我使用了 AspectFit。

但是当我将结果图像分配回我的 imageView 时应用效果后,它会拉伸(stretch)。无论我使用哪种 UIViewContentMode。它不起作用。似乎它总是应用 ScaleToFill 而不管我给出的过滤器。

知道为什么会这样吗?非常感谢任何建议。

最佳答案

(1) Aspect Fit 确实拉伸(stretch)图像 - 以适合。如果您根本不想拉伸(stretch)图像,请使用居中(例如)。

(2) imageWithCIImage 给你一个非常奇怪的野兽,一个不基于 CGImage 的 UIImage,因此不受图层显示的正常规则的影响。它实际上只是 CIImage 的薄包装,这不是您想要的。您必须通过 CGImage 将 CIFilter 输出转换(渲染)为 UIImage,从而为您提供一个实际上具有一些位(CGImage,位图)的 UIImage。我在这里的讨论为您提供了演示代码:

http://www.apeth.com/iOSBook/ch15.html#_cifilter_and_ciimage

换句话说,在某些时候,您必须调用 CIContext createCGImage:fromRect: 以从 CIFilter 的输出生成 CGImageRef,并将其传递到 UIImage。在您这样做之前,您不会将过滤器操作的输出作为真正的 UIImage。

或者,您可以将 imageWithCIImage 中的图像绘制到图形上下文中。例如,您可以将其绘制到图像图形上下文中,然后使用那个图像。

不能做的是直接显示来自 imageWithCIImage 的图像。那是因为它不是图像!它没有底层位图 (CGImage)。那里没有。它只是一组用于导出图像的 CIFilter 指令。

关于iphone - 应用 CIFIlter 后设置 UIImageView 内容模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15878060/

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