1. ホーム
  2. ios

サーバーにアップロードする前に、iOSで画像を圧縮/リサイズするにはどうすればいいですか?

2023-11-26 23:51:30

質問

現在、iOSでImgurを使って画像をサーバーにアップロードしているのですが、以下のようなコードでアップロードしています。

NSData* imageData = UIImagePNGRepresentation(image);
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString* fullPathToFile = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"SBTempImage.png"];
[imageData writeToFile:fullPathToFile atomically:NO];

[uploadRequest setFile:fullPathToFile forKey:@"image"];

シミュレータで実行し、シミュレータのフォト ライブラリからファイルをアップロードすると、高速イーサネット接続を使用しているため、コードは問題なく動作します。しかし、iPhoneで撮影した画像を選択すると、同じコードがタイムアウトしてしまいます。そこで、Web から小さな画像を保存し、それをアップロードしようとしたところ、うまくいきました。

このことから、iPhone で撮影した大きな画像は、やや遅い 3G ネットワークでタイムアウトしているのだと思います。送信する前に iPhone から画像を圧縮/リサイズする方法はありますか?

解決方法を教えてください。

次のような方法で、画像を小さくすることができるはずです。

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

(1/4サイズの画像の場合)その後、小さい画像をPNGや必要な形式に変換します。