我找到了一個解決方案,將圖像序列化爲一個sql腳本,然後將它們插入db(blob列)。
我從這樣的圖像提取NSData NSData *thumbailData = [thumbnail TIFFRepresentation];
(感謝尼克)。
我解壓縮NSData後,我使用下面的方法將其轉換爲十六進制字符串。我將它添加到NSData的一個類別。
- (NSString*) hexString {
NSMutableString *stringBuffer = [NSMutableString
stringWithCapacity:([self length] * 2)];
const unsigned char *dataBuffer = [self bytes];
int i;
for (i = 0; i < [self length]; ++i)
[stringBuffer appendFormat:@"%02x", (unsigned long)dataBuffer[ i ]];
return [[stringBuffer copy] autorelease];
}
NSString *hexRepresentation = [thumbnailData hexString];
的hexRepresentation看上去象這樣:
4d4d002a00005a48fafafafff8f8f8fff8f8f8fff9f9f9fff8f8f8fff8f8f8 ...
爲了序列圖像的hexRepresentation我創建了一個SQL腳本,象下面這樣:
INSERT INTO Thumbnails (Picture_uid, Thumbnail) Values(10, x'4d4d002a00005a48fafafafff8f8f8fff8f8f8fff9f9f9fff8f8f8fff8f8f8 … ‘) ;
x'數據'告訴db它將以十六進制格式接收信息,並且它會知道如何處理它。
此解決方案的問題之一是它會使腳本大小加倍。如果你將有一個200kb的圖像,腳本將有400kb,但在數據庫中的圖像將是200kb。
對我來說,這是一個很好的解決方案,使用sql腳本更新我的數據庫而無需編寫任何代碼。
看看[SQLite中的BLOB?](http://stackoverflow.com/questions/4981154/blob-in-sqlite) – 2011-04-19 15:28:49
我存儲圖像的列是Blob類型。 – 2011-04-26 06:59:20