查看快照未保存在照片中

时间:2013-12-26 07:50:24

标签: ios objective-c ios7

我尝试使用谷歌搜索并查看SO中的其他相关问题,但是,我无法解决此问题:我正在使用这段代码拍摄整个屏幕的快照(ios7)。但是,没有保存图像。我尝试记录数据大小,尺寸等。它们似乎是有效的。有什么指针吗?

    UIView *screenshotView = [[UIScreen mainScreen] snapshotViewAfterScreenUpdates:NO];
    UIGraphicsBeginImageContext(screenshotView.bounds.size);
    [[screenshotView layer] renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *scrnshot = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    UIImageWriteToSavedPhotosAlbum(scrnshot, nil, nil, nil);

2 个答案:

答案 0 :(得分:1)

请改为尝试:

UIImageWriteToSavedPhotosAlbum(scrnshot, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);

在控制器中实现此方法:

- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo {

        if (error) {
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Error" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];

            [alert show];
        }
        else {
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Done" message:@"Image saved successfully" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];

            [alert show];
        }
    }

它可以工作,或者你会弄清楚问题是什么。 确保您允许应用使用照片库。

希望它有效。

更新:

我使用此代码截取屏幕截图:

CGSize screenSize = [[UIScreen mainScreen] applicationFrame].size;
CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB(); 
CGContextRef ctx = CGBitmapContextCreate(nil, screenSize.width, screenSize.height, 8, 4*(int)screenSize.width, colorSpaceRef, kCGImageAlphaPremultipliedLast);
CGContextTranslateCTM(ctx, 0.0, screenSize.height);
CGContextScaleCTM(ctx, 1.0, -1.0);

[(CALayer*)self.view.layer renderInContext:ctx];

CGImageRef cgImage = CGBitmapContextCreateImage(ctx);
UIImage *image = [UIImage imageWithCGImage:cgImage];
CGImageRelease(cgImage);
CGContextRelease(ctx);  
[UIImageJPEGRepresentation(image, 1.0) writeToFile:@"screen.jpg" atomically:NO];

希望它适合你!

答案 1 :(得分:-1)

实际上,图片在照片库中保存,但它们是 WHITE 颜色。这就是为什么似乎没有图像。
你需要更改这一行UIView *screenshotView = [[UIScreen mainScreen] snapshotViewAfterScreenUpdates:NO];,你的代码才能正常工作。