2012-01-30 31 views
0

私はiPhoneアプリで画像のサイズ変更について疑問を抱いています。したがって、ユーザーは写真を撮るかギャラリーから1つを選択し、この写真をサーバーに送信します。私はすでに写真をリサイズするthis answerからコードを持っている:iphone画像のサイズ変更

UIImage * small=[self imageByScalingToSize:CGSizeMake(150,150) img:image]; 

サイズは一例です。私は考慮に入れるべきものを持っている

私は、サーバーに小さな送ったが:

  • 画像が少ないか、150キロバイトに等しくなるように持っている、と
  • 私はそのとき、ユーザーhere読んだことがあります3G経由で画像を送信すると、iphoneは自動的に画像を(800,600)にリサイズします。

私がしたいのは、イメージを(800,600)(この部分は既に持っている)にリサイズして、それが150kを超えているかどうかを確認し、もしあればそれを減らします。

サイズや他のデータを知っている画像のバイト数を計算する方法はありますか?
どのようにしてこのサイズの縮小をファイルサイズで達成できますか?

答えて

1

イメージのバイトサイズを取得するために、UIImageをNSDataおよびuser-lengthに変換します。アップルのドキュメントから

長さは - 受信機に含まれるバイト数を返します。

あなたはどのようにあなたがあなたのイメージをアップロードしているいずれかの

NSData * UIImagePNGRepresentation (UIImage *image); 

または

NSData * UIImageJPEGRepresentation (UIImage *image, CGFloat compressionQuality); 
+0

私は質問がありますが、私はどのように正しいcompressionQualityを見つけますか?私はいくつかの画像でそれを試してパターンを探しましたが、パターンを見つけることができません。 1つもありますか? desired_img_size/current_img_sizeなどのようなもの???画像サイズを使用することは可能ですか?ありがとうございます – vallllll

+0

@vallllll私はあなたが探しているものを計算するための正確な方法はないと思う、私はちょうど任意の値を選択し、それを使用します。 –

+0

あなたはおそらく正しいでしょう...アンドロイドで同じものを探していて何も見つかりませんでした... – vallllll

1

を使用してUIImageに変換することができます。あなたはちょうどバイトデータを送信する必要があります、iOSはそれが画像であることを知らず、それをサイズ変更することができません!

NSData *imageData = UIImageJPEGRepresentation(myUIImage, compressionQuality); 

画像を圧縮したりサイズを変更したりするにはどうすればよいですか?これにより、base64でエンコードしてサーバーに送ることができるNSDataオブジェクトが得られます。また、NSDataを作成すると、画像がどのくらい大きいかをバイトで確認し、それが十分に小さいかどうかを判断することができます。

これが役に立ちます。 :)

関連する問題