Вопрос по objective-c, uiview, uiimageview, ios, xcode – Создать вырез UIImage

0

у меня естьUIView содержащий 2UIImageViews - рамка и картинка за рамкой. Рамка не является прямоугольником - она имеет неправильную форму. Пользователь может манипулировать изображением за рамкой (масштабирование, вращение и панорамирование), и когда это будет сделано, я хочу запечатлеть вырез изображения внутри кадра, а не изображение и кадр вместе. Есть ли способ, которым я могу сделать это?

Мне удалось объединить изображение и рамку вместе в одно изображение, как показано ниже, но я хочу только изображение, которое при успешном извлечении будет иметь рамку в форме рамки.

- (IBAction)renderPhoto:(id)sender {
    //Combine the layers into a single image
    UIView *canvas = [[[sender superview] subviews] objectAtIndex:0];
    UIGraphicsBeginImageContext(canvas.bounds.size);
    [canvas.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *combinedImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
}

Ваш Ответ

2   ответа
2

- (UIImage*)imageByCropping:(UIImage *)imageToCrop toRect:(CGRect)rect
{

    UIGraphicsBeginImageContext(photo.frame.size);/// use your screen or photo frame
    [photo.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();



    CGImageRef imageRef = CGImageCreateWithImageInRect([screenshot CGImage], rect);
    UIImage *cropped = [UIImage imageWithCGImage:imageRef];

    /*    no origin .....
    UIGraphicsBeginImageContext(tempview.frame.size);
    [[self.photo layer] renderInContext:UIGraphicsGetCurrentContext()];   
    cropped= UIGraphicsGetImageFromCurrentImageContext();    
    UIGraphicsEndImageContext(); 
    */
        return cropped;
}

Hope,this help you.... :)

Error: User Rate Limit Exceeded Smikey
Error: User Rate Limit Exceeded
0

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

Эта тема охватывает все:https://developer.apple.com/library/mac/#documentation/graphicsimaging/conceptual/drawingwithquartz2d/dq_images/dq_images.html#//apple_ref/doc/uid/TP30001066-CH212-TPXREF101

Второй вариант (отсечение контекста) находится подМаскировка изображения путем отсечения контекста.

Error: User Rate Limit Exceeded Smikey
Error: User Rate Limit ExceededCGContextRef cgContext = UIGraphicsGetCurrentContext();Error: User Rate Limit ExceededUIGraphicsBeginImageContextError: User Rate Limit Exceeded

Похожие вопросы