您的位置:首页 > 其它

保存处理过后的图片,保证与屏幕截图同清晰度

2014-07-17 11:22 447 查看
昨天晚上,CSDN上看到选招聘女神的活动,然后我把花花投给了一个不太漂亮的MS是UC优视的招聘女神,就是因为我最喜欢她的那句竞选标语,大意如此:“别人以为你的世界只有代码,可我知道你是在创造完美世界”。这也是我一个女生为什么会坚持奋斗在这一岗位上的原因之一。我也是相信我做的事终会有意义有价值,会让别人的生活变得更好。

OK,进入关于截图的小结。

1、UIView保存指定大小,指定图层

UIGraphicsBeginImageContextWithOptions(self.lableBackgroundView.theImage.bounds.size, NO, [[UIScreen mainScreen]scale]);
[self.lableBackgroundView.theImage.laye renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(image, self, nil, nil);

这段代码可以实现对self.lableBackgroundView.theImage.layer图层内容的保存。
self.lableBackgroundView.theImage.bounds.size是要保存的图层的大小。

注意这句:
UIGraphicsBeginImageContextWithOptions(self.lableBackgroundView.theImage.bounds.size, NO,
[[UIScreen
mainScreen]scale]);
//如果你的屏幕是retina,那[[UIScreen mainScreen]scale]设备分辨率为2

但是,经常会看到用这一句代替:UIGraphicsBeginImageContext(self.designView.bounds.size);
//这里默认[[UIScreen mainScreen]scale]为1,所以retina在这句代码下的截图,严重不清晰。

2、全屏截图

- (void )Screen
{
//全屏截图
CGImageRef UIGetScreenImage();
CGImageRef img = UIGetScreenImage();
UIImage* scImage=[UIImage imageWithCGImage:img];
scImage =[scImage imageRotatedByDegrees:M_PI/2];
UIImageWriteToSavedPhotosAlbum(scImage, nil, nil,nil);//存入相册
}
这段代码的效果就跟按HOME+头顶键截图的效果一样。

对全屏截图的处理

#define IsIOS7 ([[[[UIDevice currentDevice] systemVersion] substringToIndex:1]intValue]>=7)
- (void)screView:(CGRect )arect
{
//区域截图
UIImage *snapshot;
CGImageRef UIGetScreenImage();
CGImageRef cgScreen = UIGetScreenImage();
if (cgScreen) {
snapshot = [UIImage imageWithCGImage:cgScreen];
CGImageRelease(cgScreen);
}
CGRect rect;
if ([[UIScreen mainScreen]respondsToSelector:@selector(scale)]&& [[UIScreen mainScreen]scale]==2) {//获取高清size
rect = CGRectMake(arect.origin.x *2, arect.origin.y*2 + (IsIOS7?0:20*2), arect.size.width*2, arect.size.height*2);
}else
{
rect = CGRectMake(arect.origin.x, arect.origin.y+(IsIOS7?0:20), arect.size.width, arect.size.height);
}
UIImage *res = [UIImage imageWithCGImage:CGImageCreateWithImageInRect([snapshot CGImage], rect)];
UIImageWriteToSavedPhotosAlbum(res, nil, nil, nil);
}

参考:http://blog.csdn.net/huangjingjin520/article/details/14523117
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: