2010-12-07 39 views
11

Tôi có imageA (được lấy từ camera iPhone của người dùng) và imageB, một hình ảnh với một tấm bảng xếp hạng ngớ ngẩn (ví dụ) với nhiều không gian alpha trong suốt.Kết hợp hai UIImages

Điều tôi muốn làm là hợp nhất hai hình ảnh này, đặt imageB qua imageA, sau đó lưu chúng dưới dạng imageC cho tác phẩm khác.

Có cách nào để thực hiện việc này không?

Cheers

Tôi đã có này cho đến nay

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

Tôi không thể nhìn/không biết những gì tôi đang làm sai ở đây

+0

Tình yêu sự đơn giản trên thế này. –

Trả lời

3

Đó là mã có vẻ đúng (mặc dù tôi sẽ khuyên bạn nên chuyển đổi nó để sử dụng một hình ảnh CGBitmapContext được tạo ra cho an toàn luồng), nhưng là imageB phải là một JPEG? Các ảnh JPEG không hỗ trợ độ trong suốt, do đó, để việc pha trộn hoạt động, nó thực sự là một PNG.

+0

có nghĩa là một png, không có sự khác biệt mặc dù. –

+0

ah đó là vị trí của mã đã làm nó - hóa ra imageView.image là không. –

3

Lưu ý rằng để hỗ trợ retina bạn nên sử dụng: UIGraphicsBeginImageContextWithOptions(size, YES, 0); // 0 means let iOS deal with scale for you