0

プロジェクトでsqliteを使用しています
以前は画像をデータに保存していましたが、現在は次のコードのように画像をバイト単位で保存しています

NSUInteger len = [entObject.photoImageData length];  
 Byte *byteData = (Byte*)malloc(len);  
 memcpy(byteData, [entObject.photoImageData bytes], len);  
insertString = [NSString stringWithFormat:@"INSERT INTO TBL_COUNTDOWN (DAIRYID,EVENTID,DESCRIPTION,EVENTIMAGE) VALUES (\"%@\",\"%d\",\"No Data\",\"%s\")",self.dairyId,self.eventId,byteData];

画像を取得するために、次のコードを使用しています

NSData *dataForCachedImage = [[NSData alloc] initWithBytes:sqlite3_column_blob(statement, 3) length: sqlite3_column_bytes(statement, 3)];  
                    NSLog(@"dataForCachedImage/getAllEvents is %@",dataForCachedImage);  
                    UIImage *cachedImage = [UIImage imageWithData:dataForCachedImage];  
                    NSLog(@"cachedImage/getAllEvents is %@",cachedImage);

NSLog の dataForCachedImage ではデータを取得していますが、cachedImage では null を取得しています

私は自分のコードに何が問題なのかわかりません。私を助けてください

前もって感謝します

4

1 に答える 1

1

画像をドキュメント ディレクトリに保存し、そのパスを sqlite データベースに保存できます。画像コードは次のとおりです。

 #define DOCUMENTS_FOLDER [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]

 // Create a new dated file
 NSDate *now = [NSDate dateWithTimeIntervalSinceNow:0];
 NSString *caldate = [now description];

 NSString *filePath= [NSString stringWithFormat:@"%@/%@.jpg", DOCUMENTS_FOLDER,caldate];
 NSURL *url = [NSURL fileURLWithPath:filePath];

 UIImage *image = [UIImage imageNamed:@"name.jpg"];
 NSData *imageData = UIImagePNGRepresentation(image);

 [imageData writeToFile:filePath atomically:YES];

いつでも Image を取得して取得し、次のメソッドを使用して getImage

- (UIImage*)getImage
{
 NSString *imagePath = [DOCUMENTS_FOLDER stringByAppendingPathComponent:@"imagename.jpg"];
 UIImage *img = [UIImage imageWithContentsOfFile:imagePath];
 return img;
}

ファイルの削除

  NSFileManager *fileManager=[NSFileManager defaultManager];
  [fileManager removeItemAtPath:savedFilePath error:nil];

これはあなたを助けるかもしれません..

于 2012-12-27T07:24:26.863 に答える