- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在为我的一个应用程序屏幕创建模糊图像,为此我使用以下代码
UIGraphicsBeginImageContext(self.view.bounds.size);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
CIContext *context = [CIContext contextWithOptions:nil];
CIImage *inputImage = [CIImage imageWithCGImage:image.CGImage];
CIFilter *filter = [CIFilter filterWithName:@"CIGaussianBlur"];
[filter setValue:inputImage forKey:kCIInputImageKey];
[filter setValue:[NSNumber numberWithFloat:5] forKey:@"inputRadius"];
CIImage *result = [filter valueForKey:kCIOutputImageKey];
CGImageRef cgImage = [context createCGImage:result fromRect:[inputImage extent]];
blurrImage = [UIImage imageWithCGImage:cgImage];
self.blurrImageView.image = blurrImage;
CGImageRelease(cgImage);
根据上面的代码,我得到了正确的模糊图像,但问题出在 CGImageRef cgImage = [context createCGImage:result fromRect:[inputImage extent]];
这一行。
到这行显示内存占用正常,但是这行之后内存占用增加异常高,
听到的是执行前显示的内存使用情况的屏幕截图。内存使用量随着这个方法的执行而不断增加,这是之前
这是在执行行 CGImageRef cgImage = [context createCGImage:result fromRect:[inputImage extent]];
这是常见行为吗..?我搜索了答案,但我没有得到,所以任何人遇到同样的问题请帮助我
有一件事我“没有使用 ARC”
最佳答案
我在使用 Core Image 时遇到了同样的内存消耗问题。
如果您正在寻找替代品,在 iOS 7 中,您可以使用 UIImage+ImageEffects
类别,它作为 iOS_UIImageEffects
项目的一部分在 WWDC 2013 sample code 页面提供.它提供了一些新方法:
- (UIImage *)applyLightEffect;
- (UIImage *)applyExtraLightEffect;
- (UIImage *)applyDarkEffect;
- (UIImage *)applyTintEffectWithColor:(UIColor *)tintColor;
- (UIImage *)applyBlurWithRadius:(CGFloat)blurRadius tintColor:(UIColor *)tintColor saturationDeltaFactor:(CGFloat)saturationDeltaFactor maskImage:(UIImage *)maskImage;
这些不会遇到您在使用 Core Image 时遇到的内存消耗问题。 (另外,它是一种更快的模糊算法。)
此技术在 WWDC 2013 视频 Implementing Engaging UI on iOS 中有说明。
关于ios - CGImageRef 消耗大量内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20627147/
我发现 CGBitmapContextCreateImage() 创建了一个图像,该图像不一定总是与 CGContextClipToMask() 兼容的掩码。但是,当使用 CGImageMaskCre
以下是在上下文中绘制 UIImage 的具体方法: UIGraphicsBeginImageContextWithOptions(size, NO, 0.0f); [someUIImage drawI
这个问题让我很生气。我不知道出了什么问题。但是下面的代码把图像颠倒了。它实际上进行了垂直翻转,我不知道为什么。 UIFont *font = [UIFont fontWithName:fontName
我到处找遍了,还是没有结果。我正在线程中加载一些图像,由于 UIKit 不是线程安全的,我必须将图像存储为 CGImageRefs,但我不知道如何执行此操作。我以前没有玩过任何 Quartz 的东西,
我正在尝试从屏幕缓冲区中读取像素,我正在使用 CGDisplayCreateImage 创建一个 CGImageRef,但 CGImageGetWidth 的值> 和 CGImageGetByte
我正在为我的一个应用程序屏幕创建模糊图像,为此我使用以下代码 UIGraphicsBeginImageContext(self.view.bounds.size); [self.view.layer
所以我知道您可以使用 UIImage 从文件中获取 CGImage... UIImage *img = [UIImage imageNamed:@"name.bmp"]; [img CGImage];
好的,使用 coregraphics,我正在构建一个图像,稍后将在 CGContextClipToMask 操作中使用。它看起来像下面这样: UIImage *eyes = [UIImage
我想创建一个 CGImageRef 并绘制指向它的点。 使用什么上下文来创建空的 CGImageRef 并能够在其上进行绘制。CGContextRef 还是 CGBitmapContextRef? 如
我正在通过CGImageSource从TIFF文件创建CGImageRef,在另一种情况下通过CGDataProvider从原始位图数据创建CGImageRef,在另一种情况下通过NSImage从PD
该项目是一个具有核心图形支持的通用 C++ 插件。我无法成功将 PicHandle 转换为 CGImageRef。从 CFDataRef 保存图像会导致图像损坏。 if(pic) {
我需要使用 CGImageSourceCreateThumbnailAtIndex(...) 创建数千个 CGImage 对象。 问题是,当使用简单的 CGDataProviderCreateWith
我正在构建一个 Iphone 应用程序,需要将 UIImage 转换为 CGImageRef。我不知道该怎么做,并且希望得到一些帮助。我没有处理图像的背景...:) 最佳答案 它就像image.CGI
MTLTexture 之间的主要区别是什么?对比 CGImageRef ?我们什么时候需要使用MTLTexture而不是 CGImageRef (反之亦然)? 我有一个应用程序(比如视频游戏),它可以
我剪掉了一段 .c 代码,但我不想将其移植到 Objective-C。这个.c文件在iPhone平台上工作,但在OS X上不行。看来编译器不知道如何处理 #import 所以它不知道CGImageR
我能知道 CGPoint 是否在 CGImageRef 内吗?或者我应该将 CGImageRef 转换成其他格式? 更新 maskcontext = CGBitmapContextCreate(cur
我正在制作一个从电影中去除帧的程序。这在 iOS 7 上的 Xcode 5.0 模拟器中。我试图放入这个数组中的对象数量是 447。(似乎没有那么多)。 由于数组大小不够大导致内存泄漏,我的程序不断崩
我做了一个上下文,然后是一个渐变。之后,我将根据上下文进行绘制。然后我从上下文中收到一个渐变图像,它是正确的,我可以在调试器中看到它。但是当我尝试获取特定值的像素颜色时,它是不正确的。感谢您的帮助,谢
我正在考虑优化从 CGImage 获取像素数据的例程。目前这样做的方式(非常低效)是创建一个新的 CGContext,将 CGImage 绘制到上下文中,然后从上下文中获取数据。 我有以下优化例程来处
我正在用核心图形绘制图像,而不是我想将它用作另一个图像的 mask ,但只是得到清晰的矩形图像。 看看我的裁剪功能有什么问题? UIGraphicsBeginImageContext(CGSi
我是一名优秀的程序员,十分优秀!