捕捉屏幕截图
CALayer实例使用Core Graphics的renderInContext方法可以将视图绘制到图像上下文中以便转化为其他UIImage实例。前提先#import <QuartzCore/QuartzCore.h>
+ (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()方法是移除栈顶的基于当前位图的图形上下文。
捕捉截取某个区域内屏幕图像
- (UIImage *)imageFromView: (UIView *) theView atFrame:(CGRect)rect
{
UIGraphicsBeginImageContext(theView.frame.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);
UIRectClip(rect);
[theView.layer renderInContext:context];
UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return
theImage;//
[self getImageAreaFromImage:theImage atFrame:rect];
}
从某图片中截图
UIImage *image = [[UIImage alloc] initWithData:data];//
大图
CGRect imageRect = CGRectMake(0.0
, 0.0
, image.size.width, image.size.height);
CGSize itemSize = CGSizeMake(w,h);
UIGraphicsBeginImageContext(itemSize);
[image drawInRect:imageRect];
UIImage *smallimage = UIGraphicsGetImageFromCurrentImageContext();
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];
}
两图合成一图
- (UIImage*)addImage:(UIImage *)image1 toImage:(UIImage*)image2
{
UIGraphicsBeginImageContext(image1.size);
[image1 drawInRect:CGRectMake(0
,0
,image1.size.width,image1.size.height)];
[image2 drawInRect:CGRectMake(0
,0
,image2.size.width,image2.size.height)];
UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return
resultingImage;
}
分享到:
相关推荐
图像抓图,c++,源代码,简单方便,可以保存为个中格式的图像.
关于图像处理方面的一些简单程序,是一个很简单但是很实用的,谢谢大家下载,主要想下载一字儿懂
抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图
打印代码及出错抓图
抓图小程序 用于学习或使用吧 很简单的 可以抓不同的框图呀
抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图抓图
c#图像操作之屏幕抓图源码.rar
易语言代码抓图工具源码,代码抓图工具,取代码编辑区和滚动条句柄,取易语言句柄,取窗口类名,取窗口标题,取滚动条最大值,取滚动条位置,置滚动条位置,刷新窗口显示,截取窗口位图,取要拼接图片文件名数组,FindWindowEx,...
抓图程序开发实践 配套源代码 很好。抓图程序开发实践 配套源代码 很好。抓图程序开发实践 配套源代码 很好。
易语言代码抓图工具源码例程程序结合易语言位图操作支持库,调用API函数获取易语言源程序中各窗口的句柄,再取窗口中的场景抓图。
易语言代码抓图工具源码.zip易语言项目例子源码下载易语言代码抓图工具源码.zip易语言项目例子源码下载 1.合个人学习技术做项目参考 2.适合学生做毕业设计参考 3.适合小团队开发项目参考
简单抓图程序(C#代码编写) 简单抓图程序,现在只有一个功能,抓全屏幕。 QQ223857666勾月
简单抓图程序(C#源代码编写)
最好的抓图软件抓图,绿色抓图,最小的抓图软件!最好的抓图软件抓图,绿色抓图,最小的抓图软件!
精灵抓图工具:1、能方便的进行屏幕的区域截取,和一定的图像处理。2、具有图像浏览功能(支持BMP,JPEG,JPE, ICO,WMF,EMF图像格式)。3、熟悉Delphi的应用。4、学习Delphi修改注册表。使用方法:1、进入你想抓图的...
仿按键精灵抓图抓色等功能的C++代码,有需要的朋友可以下载了
易语言代码抓图工具源码.rar
小巧的抓图工具小巧的抓图工具小巧的抓图工具小巧的抓图工具小巧的抓图工具
红蜻蜓抓图精灵,可以非常方便的捕获各种适合自己要求的图像红蜻蜓抓图精灵,可以非常方便的捕获各种适合自己要求的图像红蜻蜓抓图精灵,可以非常方便的捕获各种适合自己要求的图像