2010-12-07 22 views
11

Tengo una imagen A (tomada de la cámara del iPhone del usuario) y una imagen B, una imagen con una frontera tonta (por ejemplo) con mucho espacio alfa transparente.Combinar dos UIImages

Lo que me gustaría hacer es unir estas dos imágenes, colocando imageB sobre imageA, y luego guardándolas como imageC para otro trabajo.

¿Hay alguna manera de hacerlo?

Saludos

tenemos la situación en lo que va

-(void)merge 
{ 
    CGSize size = CGSizeMake(320, 480); 
    UIGraphicsBeginImageContext(size); 

    CGPoint thumbPoint = CGPointMake(0,0); 
    UIImage *imageA = imageView.image; 
    [imageA drawAtPoint:thumbPoint]; 

    UIImage* starred = [UIImage imageNamed:@"imageB.png"]; 

    CGPoint starredPoint = CGPointMake(0, 0); 
    [starred drawAtPoint:starredPoint]; 

    UIImage *imageC = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    imageView.image = imageC; 
} 

no veo/no sé lo que estoy haciendo mal aquí

+0

Amor la simplicidad en este caso. –

Respuesta

3

Ese código es correcto (aunque lo haría recomendamos convertirlo para usar un CGBitmapContext creado para seguridad de hilos), pero se supone que es imageB un JPEG? Los archivos JPEG no son compatibles con la transparencia, por lo tanto, para que la combinación funcione, realmente debería ser un archivo PNG.

+0

significaba ser un png, sin embargo, no hay diferencia. –

+0

ah fue la ubicación del código que lo hizo - resulta que imageView.image era nulo. –

3

Tenga en cuenta que para el apoyo retina se debe utilizar: UIGraphicsBeginImageContextWithOptions(size, YES, 0); // 0 means let iOS deal with scale for you