UIImagePNGRepresentation函数return返回NSData类型,是否可以存储到SQLite中?
UIImagePNGRepresentation function return back NSData type,whether it can be stored in SQLite?
- (void)addRecordImageData:(NSData *)imageData x:(CGFloat)x y:(CGFloat)y cutterImageName:(NSString *)name
{
NSInteger imageID = 0;
if ([db open]) {
NSString *sql = [NSString stringWithFormat:@"select id from imageName where name = '%@'",name];
FMResultSet *result = [db executeQuery:sql];
while ([result next]) {
imageID = [result intForColumn:@"id"];
}
[db close];
}
if ([db open]) {
NSString *sql = [NSString stringWithFormat:@"insert into imageData(nameid,data,x,y) values (%d,%@,%.f,%.f)",imageID,imageData,x,y];
BOOL success = [db executeUpdate:sql];
success ? NSLog(@"insert success") : NSLog(@"insert faulire");
[db close];
}
}
- (void)setUp:(UIImage*)cutterImage name:(NSString *)name
{
CGImageRef imageRef = cutterImage.CGImage;
totalColumns = ceilf(cutterImage.size.width / CUTWIDTH *1.0);
totalRows = ceilf(cutterImage.size.height / CUTHEIGHT *1.0);
NSInteger x=0,y=0;
for (y = 0; y<totalRows; y++) {
NSMutableArray *row = [NSMutableArray array];
for (x = 0; x < totalColumns; x++) {
CGFloat xOffset = x * CUTWIDTH;
CGFloat yOffset = y * CUTHEIGHT;
CGImageRef tileImageRef = CGImageCreateWithImageInRect(imageRef, CGRectMake(xOffset, yOffset, CUTWIDTH, CUTHEIGHT));
NSData *imageData = UIImagePNGRepresentation([UIImage imageWithCGImage:tileImageRef]);
[self.dataBase addRecordImageData:imageData x:xOffset y:yOffset cutterImageName:name];
}
}
}
这是我的代码,当我往数据库中插入数据时,总是failure.I使用fmdb.When我运行的程序,自动跳转到一段代码在 fmdb 中。
我认为问题出在您的插入查询中。
应该有点像这样
@"insert into imageData(nameid,data,x,y) values (?,?,?,?)"
查看 this 了解更多。
- (void)addRecordImageData:(NSData *)imageData x:(CGFloat)x y:(CGFloat)y cutterImageName:(NSString *)name
{
NSInteger imageID = 0;
if ([db open]) {
NSString *sql = [NSString stringWithFormat:@"select id from imageName where name = '%@'",name];
FMResultSet *result = [db executeQuery:sql];
while ([result next]) {
imageID = [result intForColumn:@"id"];
}
[db close];
}
if ([db open]) {
NSString *sql = [NSString stringWithFormat:@"insert into imageData(nameid,data,x,y) values (%d,%@,%.f,%.f)",imageID,imageData,x,y];
BOOL success = [db executeUpdate:sql];
success ? NSLog(@"insert success") : NSLog(@"insert faulire");
[db close];
}
}
- (void)setUp:(UIImage*)cutterImage name:(NSString *)name
{
CGImageRef imageRef = cutterImage.CGImage;
totalColumns = ceilf(cutterImage.size.width / CUTWIDTH *1.0);
totalRows = ceilf(cutterImage.size.height / CUTHEIGHT *1.0);
NSInteger x=0,y=0;
for (y = 0; y<totalRows; y++) {
NSMutableArray *row = [NSMutableArray array];
for (x = 0; x < totalColumns; x++) {
CGFloat xOffset = x * CUTWIDTH;
CGFloat yOffset = y * CUTHEIGHT;
CGImageRef tileImageRef = CGImageCreateWithImageInRect(imageRef, CGRectMake(xOffset, yOffset, CUTWIDTH, CUTHEIGHT));
NSData *imageData = UIImagePNGRepresentation([UIImage imageWithCGImage:tileImageRef]);
[self.dataBase addRecordImageData:imageData x:xOffset y:yOffset cutterImageName:name];
}
}
}
这是我的代码,当我往数据库中插入数据时,总是failure.I使用fmdb.When我运行的程序,自动跳转到一段代码在 fmdb 中。
我认为问题出在您的插入查询中。 应该有点像这样
@"insert into imageData(nameid,data,x,y) values (?,?,?,?)"
查看 this 了解更多。