5

私は iPhone アプリケーションを開発しており、2 つの UIImage (leftImage と rightImage) をマージしたいと考えています。間に線を入れずにそれを行う方法を誰かが提案できますか?

私は現在これをやっています:

- (UIImage*)mergeImage:(UIImage*)first withImage:(UIImage*)second
{
    // get size of the first image
    CGImageRef firstImageRef = first.CGImage;
    CGFloat firstWidth = CGImageGetWidth(firstImageRef);
    CGFloat firstHeight = CGImageGetHeight(firstImageRef);

    // get size of the second image
    CGImageRef secondImageRef = second.CGImage;
    CGFloat secondWidth = CGImageGetWidth(secondImageRef);
    CGFloat secondHeight = CGImageGetHeight(secondImageRef);

    // build merged size
    CGSize mergedSize = CGSizeMake((firstWidth+secondWidth), MAX(firstHeight, secondHeight));

    // capture image context ref
    UIGraphicsBeginImageContext(mergedSize);

    //Draw images onto the context
    [first drawInRect:CGRectMake(0, 0, firstWidth, firstHeight)];
    //[second drawInRect:CGRectMake(firstWidth, 0, secondWidth, secondHeight)];
    [second drawInRect:CGRectMake(firstWidth, 0, secondWidth, secondHeight) blendMode:kCGBlendModeNormal alpha:1.0];

    // assign context to new UIImage
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();

    // end context
    UIGraphicsEndImageContext();

    return newImage;

}

ただし、2 つの画像の間に小さな線が作成されます。Splitcamのように、このセパレーターは必要ありません。

これどうやってするの ?

4

1 に答える 1

6

エッジを 1 ピクセルだけオーバーラップさせます。

[second drawInRect:CGRectMake(firstWidth-1, 0, secondWidth, secondHeight) 
   blendMode:kCGBlendModeNormal alpha:1.0];
于 2012-08-31T08:51:26.750 に答える