UIImagePickerControllerを使用して、アプリの画像を選択しています。ただし、選択した画像のアスペクト比を維持することに関して、いくつかの課題に直面しています。
例えば、
私は次のように電話に生の画像を持っています(正方形の画像ではありません):
「移動と拡大縮小」ページからiphoneで画像を選択して画像を切り抜いた後、結果は次のようになります(アスペクト比はここでも維持されます)
私のアプリは、選択した画像を正方形のフレーム(200 x 200)のUIImageViewに表示します。選択した画像をUIImageView(UIImageView.image = selectedImage)に設定した後、画像のアスペクト比は維持されず、代わりにUIImageViewのフレームに従います:(画像はUIImageViewで歪んで見えるようになりました):
この場合、画像のアスペクト比を維持する方法はありますか?
編集:期待される結果を更新する
いくつか考えた後、私の問題を解決する最善の方法は、そのような画像(非正方形)の場合、それらを正方形の画像に「変換」する必要があることを確認することです。つまり、画像の上下の空きスペースを埋めて、正方形など
期待される画像:(上下の境界線が追加されています)
編集:サンプルコードで更新
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)img editingInfo:(NSDictionary *)editInfo
{
self.imageView.contentMode = UIViewContentModeScaleAspectFill;
self.imageView.image = image;
[[picker parentViewController] dismissModalViewControllerAnimated:YES];
//Compress image
UIImage *image = [self scaleImage:img toSize:CGSizeMake(612.0,612.0)];
self.imageData = UIImageJPEGRepresentation(image, 0.75);
}
コード「self.imageView.contentMode=UIViewContentModeScaleAspectFill;」を追加することで、uiimageviewで正方形の画像を取得することができました。
ただし、元の画像はまだ正方形の画像ではなかったようです。そのため、「UIImage * image = [self scaleImage:img toSize:CGSizeMake(612.0,612.0)];」を実行すると、スキューの問題が発生します。私の仮定は正しいですか?とにかく、この問題を軽減するには、アプリの他の場所に「圧縮された」画像を表示する必要があります。