1
사진이 좋은 해상도로 저장되는 SQLite에 큰 테이블이있어서 큰 이미지 크기를 유지하므로 이미지 크기를 조정하고 동일한 프로세스에서 DB 테이블을 업데이트하려고합니다. SQLite DB 작업을 위해 FMDB 래퍼를 사용하고 있습니다.NSData 및 UIImage가 iOS7에서 릴리즈되지 않았습니다.
글쎄, 악기를 사용하면 NSData를 볼 수 있으며 UIImage는 출시되지 않고 메모리가 빠르게 커져서 내 앱이 닫힙니다.
어떻게해야합니까?
가 여기 코드입니다 : 인해 루프
FMResultSet *aFMResultSet = [database executeQuery:@"SELECT id, image FROM Images WHERE LENGTH(image)> 1000000;" ];
while([aFMResultSet next]){
int aId = [aFMResultSet intForColumn:@"id"];
NSData *aDataImage = [aFMResultSet dataForColumn:@"image"];
UIImage* aImage = [UIImage imageWithData:aDataImage];
UIImage *aResizedImage = [Utils resizedImage:aImage withRect:CGRectMake(0, 0, 324, 242)]; //(2592x1936)/16
NSData *aDataResizedThumbnail = UIImageJPEGRepresentation(aResizedImage,0.5f);
[database executeUpdate:@"UPDATE Images SET image = ? WHERE id = ?;", aDataResizedThumbnail, [NSNumber numberWithInt:aId],nil];
}
을 NSData * imageData의 UIImagePNGRepresentation = (화상); –
당신은'autoreleasepool'이 필요합니다. – Jack
루프에 있기 때문에 메모리가 자동으로 해제되지 않습니다. 해결책은 while 루프에 @autoreleasepool을 추가하는 것입니다. BTW : 하나는 풀 내부에 풀을 추가 할 수 있습니다. –