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