Обрезать часть UIIMAGE из более крупного UIIMAGE и включать в себя не изображения деталейIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Обрезать часть UIIMAGE из более крупного UIIMAGE и включать в себя не изображения деталей

Сообщение Anonymous »

Я думаю, что у меня может быть странная просьба, однако, надеюсь, кто -то сможет помочь. Я использую хорошо известный 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»