2012-10-08 34 views
10

Tôi là Nhà phát triển Fresher trong iPhone.làm cách nào để hợp nhất 2 hình ảnh mà không cần sử dụng đặt alpha?

Tôi muốn Hợp nhất hai hình ảnh và chỉ nhận được một hình ảnh trong UIImageView mà không đặt alpha.

Đây là mã của tôi. Mã này đang hoạt động bằng cách sử dụng alpha, nhưng tôi muốn đặt mà không đặt alpha.

MyCode: -

-(UIImage *)maskingImage:(UIImage *)image 
{ 

    CGSize sizeR = CGSizeMake(200, 220); 
    // UIImage *textureImage = [UIImage imageNamed:@"tt.png"]; 
    UIImage *textureImage =imgView2.image; 



    UIGraphicsBeginImageContextWithOptions(sizeR, YES, textureImage.scale); 
    [textureImage drawInRect:CGRectMake(0.0, 0.0, 200, 220)]; 

    UIImage *bottomImage = UIGraphicsGetImageFromCurrentImageContext(); 

    UIImage *upperImage = image; 


    CGSize newSize = sizeR ; 
    UIGraphicsBeginImageContext(newSize); 
    [bottomImage drawInRect:CGRectMake(0.0, 0.0, 200, 220)]; 
    [upperImage drawInRect:CGRectMake(0.0, 0.0, 200, 220) blendMode:kCGBlendModeNormal alpha:0.5]; 



    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return newImage; 
} 

Cảm ơn trước.

Trả lời

1
UIGraphicsBeginImageContext(YOUR SIZE); 

//FIRST IMAGE 
[FIRST_IMAGE drawInRect:CGRectMake(0, 0, YOUR_SIZE_WIDTH/2, YOUR_SIZE_HEIGHT)]; 
//SECOND IMAGE 
[SECOND_IMAGE drawInRect:CGRectMake(YOUR_SIZE_WIDTH/2, 0, YOUR_SIZE_WIDTH/2, YOUR_SIZE_HEIGHT)]; 
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 

UIGraphicsEndImageContext(); 
1

sử dụng chức năng này

- (UIImage *) mergeImage: (UIImage *) imageA 
      withImage: (UIImage *) imageB 
      strength: (float) strength X:(float)x Y:(float)y{ 

UIGraphicsBeginImageContextWithOptions(CGSizeMake([imageA size].width,[imageA size].height), NO, 0.0); 

[imageA drawAtPoint: CGPointMake(0,0)]; 

[imageB drawAtPoint: CGPointMake(x,y) 
      blendMode: kCGBlendModeNormal // you can play with this 
       alpha: strength]; // 0 - 1 

UIImage *mergedImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
return mergedImage;} 

đây x và y là placemnt nơi bạn muốn hiển thị hình ảnh thứ hai

1

tôi chỉ phải đối mặt với cùng một vấn đề, bây giờ tôi có những giải pháp cho vấn đề của tôi

CGSize newSize = CGSizeMake(320, 377); 
    UIGraphicsBeginImageContext(newSize); 

    // Use existing opacity as is 
    [ image1 drawInRect:CGRectMake(0,0,newSize.width,newSize.height)]; 
    // Apply supplied opacity 
    [image2 drawInRect:CGRectMake(0,0,newSize.width,newSize.height) blendMode:kCGBlendModeNormal alpha:0.8]; 

    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

Hãy thử điều này, công việc của nó như một sự quyến rũ đối với tôi, tôi hy vọng bạn cũng sẽ nhận được giải pháp.

bạn có thể sử dụng như -

[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height) blendMode:kCGBlendModeNormal alpha:0.0]; 
Các vấn đề liên quan