- 2010年4月16日 15:31
- iPhone
今日はiPhone関連で2つためになったこと。
まず、UIImageの合成。
下記は参考サイトです。下記はUIImageViewを使っています。
create one UIImage from two UIImageView.
image1 は下になる画像です。
image2 はアルファチャネルを持った画像です。
それら2つを合成してresultingImageという合成画像を作ります。
ちなみに両方の画像サイズは一緒のものを想定しています。
imageViewはUIImageView で合成した画像を表示する。
UIGraphicsBeginImageContext(image1.size); CGRect rect = CGRectMake(0, 0, image1.size.width, image1.size.height); [image1 drawInRect:rect]; [image2 drawInRect:rect blendMode:kCGBlendModeNormal alpha:1.0]; UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); [imageView setImage:resultingImage];
ポイントは、
drawInRect:blendMode:alpha:
ですね。blendModeは様々あるので調べてみてください。
そして話しは変わって、先日AdHocで配布したファイルがインストール出来ない謎な現象が発生。残り1週間を切ったdeveloper programではあったけど、なぜか使えなくなったみたい。
なんで〜? プログラムを更新したら問題無くなりました。更新は早めにということですか?
普段はiMacで開発をしていますが、MacBookProを買ったのでノートでも移動時などに開発できればいいなぁと思って、iPhone Provisioning PortalからCertification等々DLしてインストールしてみましたが、使えませんでした。グーグル先生に聞いても分からなかったのですが、教えてもらいました!
キーチェーンアクセスに登録されている証明書を右クリック。
「書き出す」という項目があるので選択。
書き出しファイルを保存するので「証明書.p12」ファイル名で
フォーマットは「個人情報交換(.p12)」で保存。
書き出したファイルを別のマシンにインストールすれば、ビルドできました!
- Newer: iPhone UIImageViewのアニメ
- Older: iPadから投稿
Comments:7
- なかた 2012年2月16日 20:24
こんにちは、サイトを参考にさせていただきました。
上記のコードで実行するとメモリリークしませんか?
- 店長 2012年2月16日 20:45
もし上記のコードでメモリリークするとすれば、image1かimage2のUIImageをallocまたはretainした場合ではないでしょうか?
上記コードはどのようにUIImageを保持しているのかは書かれていないですね。- なかた 2012年2月16日 22:59
ご回答ありがとうございました。
ご回答いただいた通りでした。大変失礼しました。
そして参考になりました。ありがとうございました。- 店長 2012年2月16日 23:17
お役に立てたなら嬉しいです。
- なかた 2012年2月23日 22:46
こんばんは、たびたびすみません。
カメラで撮影したデータに直接上記のコードを書いているのですが
どうしてもメモリリークしてしまいます。aImageViewはxibにてImageViewを配置して関連づけしています。
aImageViewの設定の仕方がわるいのか?
そもそもimagePickerControllerに対して下記コードを実行する事がよろしくないのか?...
初心者の質問で本当にすみません。何かアドバイスいただけますと幸いです。- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
UIImage *layer1 = [info valueForKey:UIImagePickerControllerOriginalImage];
UIImage *layer2 = [UIImage imageNamed:@"image.png"];
UIGraphicsBeginImageContext(layer1.size);
CGRect rect = CGRectMake(0, 0, layer1.size.width, layer1.size.height);
[layer1 drawInRect:rect];
[layer2 drawInRect:rect blendMode:kCGBlendModeNormal alpha:1.0];
UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[aImageView setImage:resultingImage];[picker dismissModalViewControllerAnimated:YES];
}- 店長 2012年2月23日 23:44
追記ありがとうございます。
ちなみにどんなリークログが出るのでしょうか?
Instrumentsのleaksでリークが検出されるのですよね?- なかた 2012年2月24日 09:20
おはようございます。ご返信ありがとうございます。
Instrumentsのleaksでリークが検出されますし、
ログにもメモリーワーニングが出ます。。。Instrumentsのleaksのどの部分を見れば
どんな原因か分かりますか?
Trackbacks:0
- TrackBack URL for this entry
- http://www.hirano-dept.com/mt/mt-tb.cgi/95
- Listed below are links to weblogs that reference
- iPhone UIImageの合成 と 複数のMacで共有できる証明書の書き出し from 袖触れ合うも多少の縁