我对UIImageView
和UIImage
进行了设置。如何使用coregraphics使图像变得清晰或模糊?如何锐利/模糊iphone中的uiimage?
回答
你真正需要的是CoreImage API中的图像过滤器。不幸的是CoreImage在iPhone上不支持(除非最近改变了,我错过了它)。这里要小心,因为IIRC,它们在SIM中可用 - 但不在设备上。
AFAIK没有其他的方法可以正确处理原生库,尽管我之前通过在顶部创建一个额外的图层来制作一个模糊的图层,它是下面的内容的副本,由像素或两个并且具有低α值。为了获得适当的模糊效果,我唯一能够做到的方式是在Photoshop或类似的离线模式下进行。
想知道是否还有更好的方法,但据我所知,这是目前的情况。
苹果有一个名为GLImageProcessing一个伟大的示例程序,其中包括一个非常快的模糊/使用OpenGL ES 1.1锐化效果(这意味着它适用于所有的iPhone,而不仅仅是3GS)。
如果你没有相当经验与OpenGL,代码可能会让你的头受伤。
走下OpenGL路线感觉像疯了一样矫枉过正,以满足我的需求(模糊了图像上的一个接触点)。相反,我实现了一个简单的模糊过程,它需要一个接触点,创建一个包含该接触点的矩形,在那个点上对图像进行采样,然后将示例图像在源矩形顶部重新倒置几次,略微偏移一些不同的不透明度。这产生了一个相当不错的穷人的模糊效果,没有疯狂的代码和复杂性。代码如下:
- (UIImage*)imageWithBlurAroundPoint:(CGPoint)point {
CGRect bnds = CGRectZero;
UIImage* copy = nil;
CGContextRef ctxt = nil;
CGImageRef imag = self.CGImage;
CGRect rect = CGRectZero;
CGAffineTransform tran = CGAffineTransformIdentity;
int indx = 0;
rect.size.width = CGImageGetWidth(imag);
rect.size.height = CGImageGetHeight(imag);
bnds = rect;
UIGraphicsBeginImageContext(bnds.size);
ctxt = UIGraphicsGetCurrentContext();
// Cut out a sample out the image
CGRect fillRect = CGRectMake(point.x - 10, point.y - 10, 20, 20);
CGImageRef sampleImageRef = CGImageCreateWithImageInRect(self.CGImage, fillRect);
// Flip the image right side up & draw
CGContextSaveGState(ctxt);
CGContextScaleCTM(ctxt, 1.0, -1.0);
CGContextTranslateCTM(ctxt, 0.0, -rect.size.height);
CGContextConcatCTM(ctxt, tran);
CGContextDrawImage(UIGraphicsGetCurrentContext(), rect, imag);
// Restore the context so that the coordinate system is restored
CGContextRestoreGState(ctxt);
// Cut out a sample image and redraw it over the source rect
// several times, shifting the opacity and the positioning slightly
// to produce a blurred effect
for (indx = 0; indx < 5; indx++) {
CGRect myRect = CGRectOffset(fillRect, 0.5 * indx, 0.5 * indx);
CGContextSetAlpha(ctxt, 0.2 * indx);
CGContextScaleCTM(ctxt, 1.0, -1.0);
CGContextDrawImage(ctxt, myRect, sampleImageRef);
}
copy = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return copy;
}
嘿布雷克你能指导我如何实现模糊效果,同时绘图??我发布了关于SO的问题:[在使用OpenGL-ES的油漆应用程序中的模糊效果(湿湿效应)](http:// stackoverflow。 com/questions/6980402/blur-effect-wet-in-wet-effect-in-paint-application-using-opengl-es) – 2011-08-11 11:03:45
任何建议或hekp被赞赏.. – 2011-08-11 11:04:28
- 1. 如何缩小UIImage并使其变得脆脆/锐利,而不是模糊?
- 2. UIImage上的模糊
- 3. 问题模糊UIImage
- 4. 模糊背景上的尖锐边缘
- 5. CSS:模糊股利
- 6. 模糊滑块变化UIImage
- 7. 为什么这些UIImage如此“模糊”?
- 8. 锐利的URL参数
- 9. 将模糊例程与UIImage或CGImageRef连接...(iPhone)
- 10. 股利标签模糊
- 11. 模糊UIImage的特定部分
- 12. 如何使用Swift将模糊效果添加到UIImage中?
- 13. 我的logo在wordpress中不够锐利
- 14. 如何让JavaFX TableView中的网格线保持锐利?
- 15. 模糊像素的iPhone 4
- 16. 如何在Windows窗体中创建“锐利”渐变?
- 17. 渲染锐利的线条在WPF
- 18. QImage显示锐利的像素
- 19. 如何模糊ListView项目与模糊?
- 20. 如何模糊iframe以模糊图像?
- 21. iPhone UIComponents模糊不清@ 1x
- 22. 如何拥有清晰,锐利和苗条的jqueryUI GUI元素?
- 23. 如何用Qt 5.6在高DPI上获得锐利的UI?
- 24. 如何在iPhone中裁剪UIImage?
- 25. 如何在Iphone中模糊图像边缘
- 26. 如何在iPhone视图中创建模糊文本?
- 27. 如何模糊relativeLayout
- 28. 不支持字体锐利效果
- 29. IPHONE:如何提取UIIMage的RGB通道?
- 30. iphone上的模糊图像jquery mobile
嗯,有好消息,如果你”重新iOS5 :) – steipete 2011-08-10 15:12:27
不幸的是,iOS 5上的Core Image不包含任何模糊的过滤器。 :( – LucasTizma 2012-01-13 05:00:36