2012-03-19 9 views
3

私は写真ライブラリから画像を撮影しています.4~5MBの大きな画像がありますが、それらの画像を圧縮したいと思います。これらの画像をiphone.forのローカルメモリに保存する必要があります。私はそれらの画像を圧縮する必要があります。iphoneで画像を圧縮する方法は?

画像と動画を圧縮する方法がわかりません。画像を圧縮するために熱く知りたいのですか?

UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; 

    NSData* data = UIImageJPEGRepresentation(image,1.0); 
    NSLog(@"found an image"); 

    NSString *path = [destinationPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.jpeg", name]]; 
    [data writeToFile:path atomically:YES]; 

これは画像を保存するためのコードです。私はイメージ全体をその大きすぎるものとして保存したくない。ですから、私は複数の画像を添付する必要があるので、もっと小さなサイズに圧縮したいと思います。

返信いただきありがとうございます。

+1

イメージを圧縮しても、メモリエラーの原因とはなりません。ディスクスペースを節約するためにイメージを圧縮できますが(フラッシュラム)、イメージを表示する場合は、常にメモリに展開され、width * height * 4 ramが使用されます。 – Bastian

答えて

11

あなたは0.8のようなものがあまりにも目立ってはならない、と本当にファイルサイズを改善する必要があり

NSData* data = UIImageJPEGRepresentation(image, 0.8); 

JPEGエンコードのための低品質を選択することができます。

その上、このような方法を用いて、JPEG表現を行う前に画像のサイズを変更するに見える:

+ (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize { 
    UIGraphicsBeginImageContext(newSize); 
    [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)]; 
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();  
    UIGraphicsEndImageContext(); 
    return newImage; 
} 

出典:The simplest way to resize an UIImage?

+0

サイズ変更についての2番目の点は非常に重要で、状況によっては品質を犠牲にすることなくサイズを大幅に減らすことができると思います。特に、画面上で見ることができるものよりも大きな画像を検出した場合。素晴らしい答え。 –

5

UIImageJPEGRepresentation(UIImage、品質)。

1.0は最高品質を意味し、0は最低品質を意味します。

SO JPEGなどの画像

NSData* data = UIImageJPEGRepresentation(image,1.0); 
1
NSData *UIImageJPEGRepresentation(UIImage *image, CGFloat compressionQuality); 

OR

NSData *image_Data=UIImageJPEGRepresentation(image_Name,compressionQuality); 

リターン画像のファイルサイズを小さくするために、次の行の品質パラメータを変更します。画像にCGImageRefや無効なビットマップ形式がない場合はnilを返すことがあります。 compressionQualityは0(ほとんど)& 1(最小)です。

関連する問題