画像とその名前でアイテムを表示するUITableViewがあります。問題は、各セルの画像が読み込まれるためにスクロールが遅れることです。
これが、iPhoneカメラからキャプチャして320x480にサイズ変更した画像を保存する方法です。
- (void)saveImage: (UIImage*)image{
if (image != nil)
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *imageName = [NSString stringWithFormat: @"image_%@.png",[NSDate date]];
item.imageName = imageName;
NSString* path = [documentsDirectory stringByAppendingPathComponent:
imageName];
NSLog(@"%@",path);
NSData* data = UIImagePNGRepresentation(image);
[data writeToFile:path atomically:YES];
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setInteger:[image imageOrientation] forKey:@"kImageOrientation"];
} }
これが私がそれをサイズ変更している方法です
- (UIImage *)resizeImage:(UIImage*)image newSize:(CGSize)newSize {
CGRect newRect = CGRectIntegral(CGRectMake(0, 0, newSize.width, newSize.height));
CGImageRef imageRef = image.CGImage;
UIGraphicsBeginImageContextWithOptions(newSize, NO, 0);
CGContextRef context = UIGraphicsGetCurrentContext();
// Set the quality level to use when rescaling
CGContextSetInterpolationQuality(context, kCGInterpolationHigh);
CGAffineTransform flipVertical = CGAffineTransformMake(1, 0, 0, -1, 0, newSize.height);
CGContextConcatCTM(context, flipVertical);
// Draw into the context; this scales the image
CGContextDrawImage(context, newRect, imageRef);
// Get the resized image from the context and a UIImage
CGImageRef newImageRef = CGBitmapContextCreateImage(context);
UIImage *newImage = [UIImage imageWithCGImage:newImageRef];
CGImageRelease(newImageRef);
UIGraphicsEndImageContext();
return newImage;}
そして、これは私がcellForRowAtIndexPathにそれらをロードする方法です
- (UIImage*)loadImage:(NSString *) imageName{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString* path = [documentsDirectory stringByAppendingPathComponent:
[NSString stringWithString: imageName]];
UIImage* image = [UIImage imageWithContentsOfFile:path];
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
UIImage *orientedImage= [UIImage imageWithCGImage: image.CGImage scale:1.0 orientation: [userDefaults integerForKey:@"kImageOrientation"]];
return orientedImage;}
私が考えていたアプローチの1つは、UIImagesがロードされたNSMutableArrayを一度ロードして、そこから画像をフェッチすることです。このアプローチの問題は、すべてのセルに画像があるわけではないため、10個のセルがあり、最後の3つのセルには3つの画像しかないということです。ここでは、追加される画像のインデックスが0、1になるため、NSMutableArrayアプローチが問題になります。 2.2。
専門家がそれが機能するかどうかを確認するために、ここで強調したいもう1つの解決策があります。私は実際にCoreDataを使用しており、アイテムのモデルを生成しました。このクラスにUIImageフィールドを手動で追加し、それらのオブジェクトに画像を保存する場合、それは機能しますか、それとも間違っていますか?