-5

私のiPadアプリケーションでは、ユーザーがアプリケーションのボタンをクリックしたときに現在の画面のスクリーンショットをデータベースに保存するなどの機能を実装したいと考えています。私はiOS開発に不慣れで、それを実装する方法をまったく知りません。方法を教えてください。

4

3 に答える 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 に答える