Я использую UIImagePickerController для выбора изображений для своего приложения. Однако мне приходится сталкиваться с некоторыми проблемами в отношении поддержания соотношения сторон выбранных изображений.
Например,
У меня есть необработанное изображение на телефоне следующим образом (не квадратное изображение):
После выбора изображения на iphone через страницу "перемещение и масштабирование" для обрезки изображения результат будет следующим: (соотношение сторон по-прежнему поддерживается здесь)
Мое приложение отобразит выбранное изображение в UIImageView с квадратным фреймом (200 x 200). После установки выбранного изображения в UIImageView (UIImageView.image = selectedImage) соотношение сторон изображения не поддерживается, а вместо него следует кадр UIImageView: (Изображение теперь искажено в моем UIImageView):
Есть ли способ сохранить соотношение сторон изображения в этом случае?
EDIT: Обновить ожидаемый результат
После некоторого размышления я понимаю, что лучший способ решить мою проблему - обеспечить, чтобы для таких изображений (не квадратные) мне нужно было "преобразовать" их в квадратные изображения, т.е. заполнить пустые пространства сверху и снизу изображений сделать квадрат, например
Ожидаемое изображение: (с добавлением верхней и нижней границ)
ИЗМЕНИТЬ: Обновить с помощью примера кода
- (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)];". Правильно ли мое предположение? В любом случае, чтобы смягчить эту проблему, поскольку мне все равно придется отображать "сжатое" изображение в другом месте приложения.