2010-03-23 8 views
9

Tengo una imagen en un UIScrollView, que se puede desplazar y ampliar.Cómo crear una imagen desde un UIView/UIScrollView

Cuando el usuario presiona un botón, quiero que el código cree una imagen desde cualquier parte de UIScrollView dentro de un área que especifico con un CGRect.

He visto código para recortar UIImages, pero no puedo adaptarlo para hacer lo mismo para una vista, porque usa CGContextDrawImage.

¿Alguna idea?

Saludos, Andre

Respuesta

28

me han arreglado para conseguirlo.

aquí está mi solución, basada en algunos diversos desde la web:

- (UIImage *)imageByCropping:(UIScrollView *)imageToCrop toRect:(CGRect)rect 
{ 
    CGSize pageSize = rect.size; 
    UIGraphicsBeginImageContext(pageSize); 

    CGContextRef resizedContext = UIGraphicsGetCurrentContext(); 
    CGContextTranslateCTM(resizedContext, -imageToCrop.contentOffset.x, -imageToCrop.contentOffset.y); 
    [imageToCrop.layer renderInContext:resizedContext]; 
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 

    UIGraphicsEndImageContext(); 

    return image; 
} 

que llaman usando:

CGRect clippedRect = CGRectMake(0, 0, 320, 300); 
picture.image = [self imageByCropping:myScrollView toRect:clippedRect]; 
+0

Eso fue muy útil, gracias. Sin embargo, un pequeño error en el método: se refiere a scrollView, aunque debería referirse a imageToCrop en su lugar, en caso de que la persona que llama no nombre la vista "scrollView". –

+0

Tiene toda la razón :) Me alegra que lo haya encontrado útil. Cheers – Andre

+0

¡Esto es muy útil! Gracias Andre – Ganesh

Cuestiones relacionadas