私は iOS 用のアバター メーカー アプリを設計しています。必要なことの 1 つは、ユーザーがさまざまなスタイルの目を選択できるようにすることと、それぞれの目の虹彩を異なる色にすることができることです。
次に例を示します。
組み合わせごとに PNG を生成しなくても、この機能を実装するにはどのような戦略がよいでしょうか? 何か案は?私は技術的な側面に精通していませんが、考えられる 1 つのアイデアは、各目の虹彩を別々の画像にしてから、色を変換することです。
あなたは何をお勧めします?
私は iOS 用のアバター メーカー アプリを設計しています。必要なことの 1 つは、ユーザーがさまざまなスタイルの目を選択できるようにすることと、それぞれの目の虹彩を異なる色にすることができることです。
次に例を示します。
組み合わせごとに PNG を生成しなくても、この機能を実装するにはどのような戦略がよいでしょうか? 何か案は?私は技術的な側面に精通していませんが、考えられる 1 つのアイデアは、各目の虹彩を別々の画像にしてから、色を変換することです。
あなたは何をお勧めします?
コードでの画像マスキングをお勧めします。
目の画像用と虹彩の色用の 2 つのレイヤーを設定し、ユーザーが選択範囲をタップしたときに各色を生成できます。
UIImage でトリックを実行する必要があるマスキング コードの簡単な例を次に示します。
- (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage {
CGImageRef maskRef = maskImage.CGImage;
CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef),
CGImageGetHeight(maskRef),
CGImageGetBitsPerComponent(maskRef),
CGImageGetBitsPerPixel(maskRef),
CGImageGetBytesPerRow(maskRef),
CGImageGetDataProvider(maskRef), NULL, false);
CGImageRef masked = CGImageCreateWithMask([image CGImage], mask);
return [UIImage imageWithCGImage:masked];
}
( http://mobiledevelopertips.com/cocoa/how-to-mask-an-image.htmlから取得)
毎回コードを実行する必要がありますが、画像がかなり小さいため問題にはなりません。パフォーマンスを向上させたい場合は、結果をキャッシュするための便利なヘルパーを作成できます。
私はそれをテストし、それは動作します。この投稿をさらに包括的にするために、これが私の実験結果です。
ベースイメージ:
マスク画像:
結果画像:
(透明度を表示するために、チェッカーの背景の上に)