在我的 iPad 应用程序中,我想实现一个功能,例如当用户单击应用程序中的按钮时,当前屏幕的屏幕截图应存储在数据库中。我是 ios 开发的新手,我完全不知道如何实现它。请指导我如何。
问问题
582 次
3 回答
1
请参阅此链接。在这里,您将找到有关如何截取屏幕截图的代码。
不要将图像保存在数据库中,将图像保存在 iPad 的 Document Directory 中。只需将该图像的文件名保存在数据库中,这将帮助您轻松获取图像。
希望这些信息对你有帮助..
于 2013-02-04T14:18:20.377 回答
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 *)view 方法
于 2013-02-04T14:22:16.840 回答
0
其他答案中的链接确实提供了很好的解决方案。正如 PJ 建议的那样,最好将图像保存在文档目录中,并将文件名保存在数据库中是一个很好的方法。
但是,如果您迫切希望将图像保存在数据库中,那么这里就是我使用过的示例
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);
}
于 2013-02-04T14:31:16.787 回答