2010-12-07 3 views
11

У меня есть изображение (взято из камеры для пользователей iPhone) и imageB, изображение с глупым бордером (например, с большим количеством прозрачного альфа-пространства).Слияние двух UIImages

Что бы я хотел сделать, это объединить эти два изображения, накладывая imageB поверх imageA, а затем сохраняя их как imageC для другой работы.

Есть ли способ сделать это?

Приветствия

Я получил это до сих пор

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

Я не могу видеть/не знаю, что я делаю неправильно здесь

+0

Любовь простота на этом. –

ответ

3

Этот код выглядит правильно (хотя я бы рекомендуем преобразовать его для использования созданного CGBitmapContext для обеспечения безопасности потоков), но imageB должен быть JPEG? JPEG не поддерживают прозрачность, поэтому для того, чтобы смешение работало, это действительно должно быть PNG.

+0

было означать, что это png, но никакой разницы. –

+0

ах это было расположение кода, который это сделал - получается, что изображениеView.image было нулевым. –

3

Обратите внимание, что для поддержки сетчатки глаза, вы должны использовать: UIGraphicsBeginImageContextWithOptions(size, YES, 0); // 0 means let iOS deal with scale for you

Смежные вопросы