一些有关图像处理的代码片段(抓图、倒影、圆角)http://www.189works.com/article-41036-1.html
2013-04-13 09:23
429 查看
摘要: 捕捉屏幕截图CALayer实例使用Core Graphics的renderInContext方法可以将视图绘制到图像上下文中以便转化为其他UIImage实例。前提先#import
QuartzCore/QuartzCore.h+ (UIImage *) imageFromView: (UIView *)theView ...
QuartzCore/QuartzCore.h+ (UIImage *) imageFromView: (UIView *)theView ...
捕捉屏幕截图 CALayer实例使用Core Graphics的renderInContext方法可以将视图绘制到图像上下文中以便转化为其他UIImage实例。前提先#import + (UIImage *) imageFromView: (UIView *)theView { // draw a view's contents into an image context UIGraphicsBeginImageContext(theView.frame.size); CGContextRef context = UIGraphicsGetCurrentContext(); [theView.layer renderInContext:context]; UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return theImage; } 注:UIGraphicsBeginImageContext(CGSize size)创建一个基于位图的上下文(context),并将其设置为当前上下文。函数功能与UIGraphicsBeginImageContextWithOptions相同,相当于该方法的opaque参数为NO,scale因子为1.0。而UIGraphicsEndImageContext()方法是移除栈顶的基于当前位图的图形上下文。 视图添加倒影效果 const CGFloat kReflectPercent = -0.25f; const CGFloat kReflectOpacity = 0.3f; const CGFloat kReflectDistance = 10.0f; + (void)addSimpleReflectionToView:(UIView *)theView { CALayer *reflectionLayer = [CALayer layer]; reflectionLayer.contents = [theView layer].contents; reflectionLayer.opacity = kReflectOpacity; reflectionLayer.frame = CGRectMake(0.0f,0.0f,theView.frame.size.width,theView.frame.size.height*kReflectPercent); //倒影层框架设置,其中高度是原视图的百分比 CATransform3D stransform = CATransform3DMakeScale(1.0f,-1.0f,1.0f); CATransform3D transform = CATransform3DTranslate(stransform,0.0f,-(kReflectDistance + theView.frame.size.height),0.0f); reflectionLayer.transform = transform; reflectionLayer.sublayerTransform = reflectionLayer.transform; [[theView layer] addSublayer:reflectionLayer]; } 另一:使用Core Graphics创建倒影 + (CGImageRef) createGradientImage:(CGSize)size { CGFloat colors[] = {0.0,1.0,1.0,1.0}; //在灰色设备色彩上建立一渐变 CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray(); CGContextRef context = CGBitmapContextCreate(nil,size.width,size.height,8,0,colorSpace,kCGImageAlphaNone); CGGradientRef gradient = CGGradientCreateWithColorComponents(colorSpace,colors,NULL,2); CGColorSpaceRelease(colorSpace); //绘制线性渐变 CGPoint p1 = CGPointZero; CGPoint p2 = CGPointMake(0,size.height); CGContextDrawLinearGradient(context,gradient,p1,p2,kCGGradientDrawsAfterEndLocation); //Return the CGImage CGImageRef theCGImage = CGBitmapContextCreateImage(context); CFRelease(gradient); CGContextRelease(context); return theCGImage; } //Create a shrunken frame for the reflection + (UIImage *) reflectionOfView:(UIView *)theView WithPercent:(CGFloat) percent { //Retain the width but shrink the height CGSize size = CGSizeMake(theView.frame.size.width, theView.frame.size.height * percent); //Shrink the View UIGraphicsBeginImageContext(size); CGContextRef context = UIGraphicsGetCurrentContext(); [theView.layer renderInContext:context]; UIImage *partialimg = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); //build the mask CGImageRef mask = [ImageHelper createGradientImage:size]; CGImageRef ref = CGImageCreateWithMask(partialimg.CGImage,mask); UIImage *theImage = [UIImage imageWithCGImage:ref]; CGImageRelease(ref); CGImageRelease(mask); return theImage; } const CGFloat kReflectDistance = 10.0f; + (void) addReflectionToView: (UIView *)theView { theView.clipsToBounds = NO; UIImageView *reflection = [[UIImageView alloc] initWithImage:[ImageHelper reflectionOfView:theView withPercent:0.45f]]; CGRect frame = reflection.frame; frame.origin = CGPointMake(0.0f, theView.frame.size.height + kReflectDistance); reflection.frame = frame; // add the reflection as a simple subview [theView addSubView:reflection]; [reflection release]; } 实现圆角图片: UIColor *color = [UIColor colorWithRed:0.95 green:0.95 blue:0.95 alpha:0]; [aImage setBackgroundColor:color]; //设置背景透明 /******设置图片圆角begin*******/ aImage.layer.masksToBounds = YES; aImage.layer.cornerRadius = 5.0; aImage.layer.borderWidth = 0.5; aImage.layer.borderColor = [[UIColor grayColor] CGColor]; /******设置图片圆角end********/ 另有方法可见:http://www.4ucode.com/Study/Topic/2058289转载文章。 实现iPhone图标的水晶立体效果 - (void)viewDidLoad { [super viewDidLoad]; UIGraphicsBeginImageContext(icon.bounds.size); CGContextRef ctx = UIGraphicsGetCurrentContext(); const CGFloat components[4] = {0.0,0.4,0.0,1.0}; CGContextSetFillColor(ctx, components); CGContextFillRect(ctx, CGRectMake(0, 0, icon.bounds.size.width, icon.bounds.size.height)); UIImage *background = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); UIImage *image = [UIImage imageNamed:@"icon.png"]; UIImage *mask = [UIImage imageNamed:@"IconBase.png"]; UIImage *roundCorner = [UIImage imageNamed:@"round-corner.png"]; icon.image = image; CALayer* subLayer = [[CALayer layer] retain]; subLayer.frame = icon.bounds; subLayer.contents = (id)[background CGImage]; CALayer* maskLayer = [[CALayer layer] retain]; maskLayer.frame = icon.bounds; maskLayer.contents = (id)[mask CGImage]; [subLayer setMask:maskLayer]; [[icon layer] addSublayer:subLayer]; CALayer* roundCornerLayer = [[CALayer layer] retain]; roundCornerLayer.frame = icon.bounds; roundCornerLayer.contents = (id)[roundCorner CGImage]; [[icon layer] setMask:roundCornerLayer]; [maskLayer release]; [subLayer release]; [roundCornerLayer release]; } |
相关文章推荐
- 一些有关图像处理的代码片段(抓图、倒影、圆角)
- 一些有关图像处理的代码片段(抓图、倒影、圆角)
- 一些有关图像处理的代码片段(抓图、倒影、圆角)
- 一些有关图像处理的代码片段(抓图、倒影、圆角)
- 一些有关图像处理的代码片段(抓图、倒影、圆角)
- 一些有关图像处理的代码片段(抓图、倒影、圆角)
- 一些有关图像处理的代码片段(抓图、倒影、圆角)
- 一些有关图像处理的代码片段(抓图、倒影、圆角)
- 一些有关图像处理的代码片段(抓图、倒影、圆角)
- 图像处理的代码片段(抓图、倒影、圆角)
- Android中几种图像特效处理的小技巧,比如圆角,倒影,还有就是图片缩放,Drawable转化为Bitmap,Bitmap转化为Drawable等等
- 彩色图像为何灰度化处理?http://www.cnblogs.com/Wiseman/archive/2007/06/09/69701.html?page=4
- Android上图像处理-倒影,圆角,渐变
- (转载)JavaScript一些实用技巧(http://it.chinawin.net/softwaredev/article-261f.html)
- 有关图片处理的一些片段--Bitmap.Config参数
- 一些有关医学图像处理的主页
- Android上图像处理-倒影,圆角,渐变
- Android 图像处理(类型转换,比例缩放,倒影,圆角)
- 时间处理的一些代码片段
- EFDC主控文件efdc.inp文件的xml格式化处理——转载http://blog.sina.com.cn/s/articlelist_1584892573_0_1.html