2

私の連絡先アプリケーションでは、画像ビューを使用して連絡先の画像を表示しました。

このプロセスでは、データを保存するときに、連絡先の画像も保存できます (文字列、画像ファイル名の形式で)

サンドボックス(ドキュメントディレクトリ)に画像をコピーし、画像のファイル名を保存します

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo
{

            NSString *DirectoryPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

            [[NSUserDefaults standardUserDefaults] setValue:storedPicsDict.contactImage forKey:@"oldContactPic"];

            //To SET the NEw IMAGE images from directory path
            CFUUIDRef uuid = CFUUIDCreate(NULL);
            CFStringRef generatedUUIDString = CFUUIDCreateString(NULL, uuid);
            CFRelease(uuid);
            NSString* hashKey = [(NSString*)generatedUUIDString autorelease];
            self.ContactImageFilePath = [NSString stringWithFormat:@"%@/%@.png",DirectoryPath,hashKey];

            storedPicsDict.contactImage = self.ContactImageFilePath;
            [contactPicture setImage:image forState:UIControlStateNormal];

            isNewContactImage = true;
      }


      [picker dismissModalViewControllerAnimated:YES];
}

それぞれの保存画像が連絡先の情報に表示されます。

しかし、6/7 を超える画像をいくつか保存すると、メモリ警告が発生し、アプリがクラッシュしたり遅くなったりします。*

だから私は低解像度と低メモリサイズで画像を保存する必要があります、

どうですか、ありがとう

4

2 に答える 2

11

1>画像サイズが縮小されるように、画像をjpeg形式で保存します

NSData *imgData = UIImageJPEGRepresentation(your_UIImage_to_save, 0.5);
[imgData writeToFile:path_of_doc_dir_with_image_name atomically:YES];

2>

画像の品質とサイズを縮小したい場合は、このコードを使用できます

CGSize newSize=CGSizeMake(50,50); // I am giving resolution 50*50 , you can change your need
UIGraphicsBeginImageContext(newSize);
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

これがあなたを助けることを願っています..

于 2012-11-26T08:01:51.840 に答える
3

これを使ってみてはどうですか

UIImage *small = [UIImage imageWithCGImage:original.CGImage scale:0.25     orientation:original.imageOrientation];

小さい方の画像をアップロード用の tmp ファイル パスに保存します。画像は .png である必要がありますか? それ以外の場合は、UIImageJPEGRepresentation を試して画像の品質を下げることもできます。

于 2012-11-26T07:55:51.747 に答える