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

        昨天晚上,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.sizeNO, [[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





你可能感兴趣的:(绘图与动画)