2012-04-18 20 views
2

私のアプリケーションでは、16進数の画像を持っています。 ブロブタイプに変換してデータベースに保存したいです。iphoneで16進数値をblobに変換する方法

どのように可能ですか?

よろしく K L BAIJU

+1

16進数ではどういう意味ですか?それはbase64でエンコードされていますか? –

答えて

0

私の知識によると、それはあなたが、Webサービスからの画像データを得た場合は、base64エンコードに受信した文字列データをエンコードする必要があるとし、base64エンコードです。 UIImageViewに

NSData* data=[[NSData alloc] initWithBase64EncodedString:base64ImageString];

、あなたは容易に検索することができ、データ、

UIImageView* imageView=[[UIImageView alloc] initWithImage:[UIImage imageWithData:data]];

と検索された画像データにスニペット

if(insertStmt == nil) { 
    const char *sql = "insert into TableName values(?,?)"; 
    if(sqlite3_prepare_v2(database, sql, -1, &insertStmt, NULL) != SQLITE_OK) 
     NSAssert1(0, @"Error while creating update statement. '%s'", sqlite3_errmsg(database)); 
    } 

sqlite3_bind_text(insertStmt, 1, [imageName UTF8String], -1, SQLITE_TRANSIENT); 

NSData *imgData = UIImagePNGRepresentation(imageView.image); 

int returnValue = -1; 

returnValue = sqlite3_bind_blob(insertStmt, 2, [imgData bytes], [imgData length], NULL); 

if(returnValue != SQLITE_OK) 
    NSLog(@"Not OK!!!"); 

if(SQLITE_DONE != sqlite3_step(insertStmt)) 
    NSAssert1(0, @"Error while inserting. '%s'", sqlite3_errmsg(database)); 

sqlite3_reset(insertStmt); 

[data release]; 
[imageView release]; 

次使用BLOBデータ型としてのsqlite内に画像データを保存しますデータベースから

if(detailStmt == nil) { 
const char *sql = "Select * from TableName"; 
    if(sqlite3_prepare_v2(database, sql, -1, &detailStmt, NULL) != SQLITE_OK) 
    NSAssert1(0, @"Error while creating detail view statement. '%s'", sqlite3_errmsg(database)); 
} 

if(SQLITE_DONE != sqlite3_step(detailStmt)) { 
NSData *data = [[NSData alloc] initWithBytes:sqlite3_column_blob(detailStmt, 2) length:sqlite3_column_bytes(detailStmt, 2)]; 

    if(data == nil) 
    NSLog(@"No image found."); 
    else 
    imageview.image = [UIImage imageWithData:data];   
} 

敬具、
Mayur

関連する問題