2011-08-21 7 views
6

3の画像をマージします。私は、背景画像、ヘッダー画像と下の画像を持っていると言うことを意味、私はFacebookへ投稿するためにそれを使用できるように単一の画像を作るためにこのすべてを組み合わせる必要があります。ありがとう。Iphonesdkは私がiPhoneアプリに取り組んでいます2つの画像

* EDIT * 私は2つのイメージのため、このコードを知っているが、どのように私は三つの画像のためにそれを使用することができます。

UIGraphicsBeginImageContext(saveView.bounds.size); 
[saveView.layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *finalImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
+1

これを確認してください - http://stackoverflow.com/questions/5299452/how-can-i-crop-an-image-with-mask-and-combine-it-with-another-image-background –

+0

これはOpenGLに基づいています。私は他の選択肢があります。あなたは携帯電話のように多くの画像がメモリに扱うことができるで動作するために私が投稿 –

+0

コード - 延長コード – shein

答えて

10

あなただけの(私も考えて、単一のUIViewでそれらを一緒に合わせることができます画面オフが、私は)まだチェックしていない - と、その後だけのUIViewをUIImageにQuartzCodeを使用していることを変換します

UIGraphicsBeginImageContext(myView.bounds.size); 
[myView.layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

その後のフォーマットにそれを回す - inのPNGのように姿勢:

NSData *imageData = UIImagePNGRepresentation(image); 

送信はあまり難しくありません。

EDITここ が拡張例であるあなたはまた、3枚の画像を参照することができます - あなたはもちろんのではなく、それをすべてを書くのにInterface Builderとアウトレットを使用することができます - しかし、あなたがしようとし、これをコピー&ペーストすることができます

UIImageView *imgView1, *imgView2, *imgView3; 
imgView1 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image1"]]; 
imgView2 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image2"]]; 
imgView3 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image3"]]; 

imgView1.frame = CGRectMake(0, 0, 50, 50); 
imgView2.frame = CGRectMake(50, 50, 100, 100); 
imgView3.frame = CGRectMake(100, 100, 200, 200); 

[referenceView addSubview:imgView1]; 
[referenceView addSubview:imgView2]; 
[referenceView addSubview:imgView3]; 

UIGraphicsBeginImageContext(referenceView.bounds.size); 
[referenceView.layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *finalImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

resultView = [[UIImageView alloc] initWithImage:finalImage]; 
resultView.frame = CGRectMake(0, 0, 320, 480); 
[self.view addSubview:resultView]; 

referenceView.hidden = YES; 

renderInContextを呼び出すときにUIViewを描画可能/表示可能にする必要があります(非表示にすることはできますが、非表示にすることはできません。つまり、非表示にするためアルファ= 0にすることができます)。だから、どちらかのオフスクリーンにそれを置くか、すぐに

+0

と私の更新の答えを参照してください私はそれをレンダリングするためのメインビューにreferenceViewを追加する必要はありませんでした見つけました。しかし、私は最初のコードでコンテキストを描画することに問題がありましたが、それを変更した後、私の答えは正常に動作するように見えます。 – Christopher

2

Sheinの答えを描画した後、それを隠すが助けてくれたが、私はそれをレンダリングするために、メインビューにUIViewのを追加する必要はありませんでした見つけました。ここで

UIImage *image = [UIImage imageNamed:@"toolbar_icon"]; // image is 20 x 20 .png 

    UIView *tempView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, image.size.width, image.size.height)]; 
    [tempView addSubview:[[UIImageView alloc] initWithImage:image]]; 

    UILabel *label = [[UILabel alloc] initWithFrame:tempView.frame]; 
    [label setText:[NSString stringWithFormat:@"%d", [self countValue]]]; 
    [label setFont:[UIFont systemFontOfSize:22.0]]; 
    [label setTextColor:[UIColor lightTextColor]]; 
    [label setTextAlignment:UITextAlignmentCenter]; 
    [label setBackgroundColor:[UIColor clearColor]]; 
    [tempView addSubview:label]; 

    UIGraphicsBeginImageContext(tempView.bounds.size); 
    [tempView.layer renderInContext:UIGraphicsGetCurrentContext()]; 
    UIImage *finalImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    UIBarButtonItem *countItem = [[UIBarButtonItem alloc] initWithImage:finalImage 
                     style:UIBarButtonItemStyleBordered 
                     target:self 
                     action:@selector(countAction:)]; 

注...画像にテキストを追加する例です:私は突然私の答えはこれを見つける前に、私がやろうとしたものである画像にラベルを追加することが含ま実現。参照Combine Label Text With Image

関連する問題