以编程方式在iPad中捕获屏幕

时间:2013-02-04 14:14:49

标签: iphone ios objective-c ipad ios5

在我的iPad应用程序中,我希望实现一项功能,例如当用户点击应用程序中的按钮时,当前屏幕的屏幕截图应该存储在数据库中。我是ios开发的新手,我完全不知道如何实现它。请指导我如何。

3 个答案:

答案 0 :(得分:1)

参考this link。在这里,您可以找到有关如何拍摄屏幕截图的代码。

不要将图像保存在数据库中,将图像保存在iPad的文档目录中。只需在数据库中保存该图像的文件名,这将有助于您轻松获取图像。

希望这些信息可以帮助你..

答案 1 :(得分:1)

试试这个......

- (UIImage*)captureView:(UIView *)view 
{
    CGRect rect = [[UIScreen mainScreen] bounds];
    UIGraphicsBeginImageContext(rect.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    [view.layer renderInContext:context];
    UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return img;
}

- (void)saveScreenshotToPhotosAlbum:(UIView *)view 
{
    appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];  
    UIImageWriteToSavedPhotosAlbum([self captureView:self.view], nil, nil,nil);
}

只需将您要捕获的任何Uiview发送到 - (UIImage *)captureView:(UIView *)视图方法

答案 2 :(得分:0)

其他答案中的链接确实提供了很好的解决方案。正如P.J建议的那样,最好将图像保存在文档目录中,只保存数据库中的文件名是一种很好的方法。

但是,如果您想要将图像保存在数据库中,那么这就是我使用过的样本

NSString *insertSQL = [NSString stringWithFormat: @"INSERT INTO TABLE_NAME (NAME, IMAGE) VALUES (\"%@\", (?))", name];


 if(sqlite3_prepare_v2(databaseObj,[insertSQL cStringUsingEncoding:NSUTF8StringEncoding], -1, &statement, NULL) == SQLITE_OK)
                {
                    NSData* imageData = UIImagePNGRepresentation(image);
                    sqlite3_bind_blob(statement, 2, [imageData bytes], [imageData length], SQLITE_STATIC);

                if(sqlite3_step(statement) != SQLITE_DONE )
                    NSLog( @"Error: %s", sqlite3_errmsg(databaseObj) );
                else
                    NSLog( @"Insert into row id = %lld", (sqlite3_last_insert_rowid(playerDB)));
                sqlite3_finalize(statement);
            }