私のiPadアプリケーションでは、ユーザーがアプリケーションのボタンをクリックしたときに現在の画面のスクリーンショットをデータベースに保存するなどの機能を実装したいと考えています。私はiOS開発に不慣れで、それを実装する方法をまったく知りません。方法を教えてください。
3 に答える
1
このリンクを参照してください。ここでは、画面のスクリーンショットを撮る方法に関するコードを見つけることができます。
画像をデータベースに保存せず、iPadのドキュメントディレクトリに画像を保存します。その画像のファイル名をデータベースに保存するだけで、画像を簡単に取得できます。
この情報がお役に立てば幸いです。
于 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 に答える