2010-12-07 22 views
11

Mam obraz A (zrobiony z aparatu iPhone użytkownika) i imageB, obraz z głupią granicą (na przykład) z dużą ilością przezroczystej przestrzeni alfa.Scalanie dwóch UIImages

Chciałbym scalić te dwa obrazy, układając imageB nad obrazem A, a następnie zapisując je jako imageC do innych prac.

Czy istnieje sposób, aby to zrobić?

Cheers

ja mam to tak daleko

-(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; 
} 

nie widzę/nie wiem co robię źle tutaj

+0

Miłość prostota na ten jeden. –

Odpowiedz

3

Ten kod wygląda poprawnie (choć chciałbym zalecamy przekonwertowanie go, aby użył utworzonego CGBitmapContext dla bezpieczeństwa wątków), ale czy jest to plik JPEG o rozdzielczości imageB? JPEG nie obsługują przezroczystości, więc aby mieszanie działało, powinno to być PNG.

+0

był jednak byciem png, bez żadnej różnicy. –

+0

ah było to położenie kodu, który to zrobił - okazało się, że imageView.image było zerowe. –

3

Zauważ, że dla siatkówki wsparcia należy użyć: UIGraphicsBeginImageContextWithOptions(size, YES, 0); // 0 means let iOS deal with scale for you