Я думаю, что у меня может быть странная просьба, однако, надеюсь, кто -то сможет помочь. Я использую хорошо известный uiscrollview + uiimageview для масштабирования на изображение и из них, а также PAN. Это работает нормально и денди, но текущий проект, который мы имеем, должны иметь возможность обрезать изображение, но также включать черные столбцы по бокам, если изображение меньше прямоугольника, чем прямоугольник. Смотрите изображения ниже. ).
< /p>
Это отлично подходит для Изображения, которые полностью увеличены (белый - это просто дополнительное пространство Uiimageview).
< /p>
Однако проблема возникает, когда мы пытаемся увеличить изображение и захватить только эту часть, плюс пустое пространство.
< /p>
Это приводит к следующему изображению
Проблема, которую мы видим Уметь создать изображение, которое именно то, что находится в прямом направлении, независимо от того, есть ли там часть изображения или нет. Другая проблема заключается в том, что мы хотим иметь возможность динамически изменить выходное разрешение. Соотношение сторон составляет 16: 9, и для этого примера kmaxwidth = 1136 и kmaxheight = 639 , однако в будущем мы можем запросить большее или меньшее разрешение 16: 9.
Ниже приведена функция, которую я имею до сих пор: < /p>
- (UIImage *)createCroppedImageFromImage:(UIImage *)image {
CGSize newRect = CGSizeMake(kMaxWidth, kMaxHeight);
UIGraphicsBeginImageContextWithOptions(newRect, YES, 0.0);
// 0 is the edge of the screen, to help with zooming
CGFloat xDisplacement = ((abs(0 - imageView.frame.origin.x) * kMaxWidth) / (self.cropSize.width / self.scrollView.zoomScale) / self.scrollView.zoomScale);
CGFloat yDisplacement = ((abs(self.cropImageView.frame.origin.y - imageView.frame.origin.y) * kMaxHeight) / (self.cropSize.height / self.scrollView.zoomScale) / self.scrollView.zoomScale);
CGFloat newImageWidth = (self.image.size.width * kMaxWidth) / (self.cropSize.width / self.scrollView.zoomScale);
CGFloat newImageHeight = (self.image.size.height * kMaxHeight) / (self.cropSize.height / self.scrollView.zoomScale);
[image drawInRect:CGRectMake(xDisplacement, 0, newImageWidth, newImageHeight)];
UIImage *croppedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return croppedImage;
}
< /code>
Любая помощь будет очень оценена. < /p>
Подробнее здесь: https://stackoverflow.com/questions/191 ... mage-parts
Обрезать часть UIIMAGE из более крупного UIIMAGE и включать в себя не изображения деталей ⇐ IOS
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение