как обрезать некоторую часть масштабированного, повернутого изображения - PullRequest
1 голос
/ 17 мая 2011

Я не могу обрезать изображение из вида изображения, которое масштабируется и поворачивается перед кадрированием. использовались существующие методы обрезки. Но это применимо только для просмотра изображений, который исправлен. Надеюсь, код будет полезен.

Ответы [ 3 ]

2 голосов
/ 20 мая 2011

Наконец успешно обрезано повернутое масштабированное изображение.

1) Необходимо обрезать все масштабированное или повернутое изображение.

2) обрезать прямоугольник из обрезанного изображения.Вы получите окончательно масштабированное или повернутое обрезанное изображение.

Я публикую пример кода, это может быть полезно для других.

UIGraphicsBeginImageContextWithOptions(self.view.frame.size, NO, 0.0);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();


CGRect rect = CGRectMake(100,100 ,200, 200);//Rect we need from scaled or rotated image.
CGImageRef cropped = CGImageCreateWithImageInRect(viewImage.CGImage, rect);
UIImage *img =  [UIImage imageWithCGImage:cropped]; 
CGImageRelease(cropped);

Спасибо.

0 голосов
/ 17 мая 2011
UIImage *myImage = [UIImage imageNamed:@"photo.png"];

CGRect cropRect = CGRectMake(0.0, 0.0, 320.0, 44.0));
CGImageRef croppedImage = CGImageCreateWithImageInRect([myImage CGImage], cropRect);

UIImageView *myImageView = [[UIImageView alloc] initWithFrame:cropRect];
[myImageView setImage:[UIImage imageWithCGImage:croppedImage]]; 

CGImageRelease(croppedImage);

для обрезки определенной высоты и ширины

0 голосов
/ 17 мая 2011

Попробуйте (если вам нужно обрезать углы):

UIImageView *imageSubview = [[UIImageView alloc] initWithFrame:CGRectMake(50.0f, 5.0f,80.0f, 60.0f)];

[imageSubview setImage:actualImage]; 
[imageSubview setContentMode:UIViewContentModeScaleToFill];
[imageSubview.layer setCornerRadius:10.0];
[imageSubview.layer setMasksToBounds:YES];
[cell addSubview:imageSubview];

Просто увеличьте радиус, и вы сделаете его кругом, или, пройдя по этому пути, вы получите свое реальное решение .:)

...