3

この質問は、実際に私の問題を解決するというよりも、ガイダンスに関するものです。

分類された画像の膨大なセットを使用して、アバター作成者C#を作成する必要があります。

コンセプトは非常に単純ですが、コードで画像を操作したことがないので、いくつかのヒントとポインターが必要です。

私がそれがどのように機能するかを想像したのは、システムには2つの部分があるということです:

  1. HTML+CSSユーザーが複数の画像を選択して配置できるようにするために使用するフロントエンド
  2. 保存アクションは、これらの画像/レイヤーとその位置をサーバーに送信し、サーバーはそれらをフラット化された画像ファイルとして書き出します

さて、これはそのようなシステムがどのように機能するかについての私の仮定です。そうでない場合は、ヒント/ポインターをいただければ幸いです。

仮定を進める:

Canvas最初の部分のクライアント側でイメージを作成するために使用する必要があるという漠然とした感じがあります。これはブラウザのサポートの問題を引き起こしますが。ここでの解決策になるかCanvas、それとも plain を使用したほうがよいでしょうかHTML4+CSS2。少し話を戻しますが、Canvas何かメリットがありますか? Canvasクライアント側のスクリーンショットを作成するために this 要素を使用する、Google のフィードバック/問題報告システムの威力を知りました!

2番目の部分については、手がかりがありません。この質問をするとき、私は C# でのイメージ作成と専門用語について読んだり調べたりGDI+Image Libraryていて、ポップアップしています。

関連する質問:

Gravatar または PHP はオプションではありません。

PS:私の研究/調査結果と SO コミュニティから提供された支援に照らして、この質問を編集する予定ですが、それ自体は議論ではないと思います。SO に関する私の調査ではあまり手がかりが得られなかったので、これをコミュニティ Wikiにして、最良の回答/提案を 1 つの投稿にまとめることができると信じています。ありがとう。

4

1 に答える 1

2

シンプルな ASP/HTML とポストバックを使用して、コンボ ボックスやその他のコントロールから選択したさまざまなオプションに基づいて画像を表示できます。

投稿し直すと、ブラウザーが新しい画像を含むページを再ダウンロードするのに少し時間がかかります。1 つのオプションは、AJAX を使用して、ページ全体をリロードせずに新しい画像をダウンロードすることです。これにより、おそらく Flash/Silverlight を必要とせずに最高のエクスペリエンスが得られます。

画像の組み合わせは何種類ありますか? 考えられるすべての組み合わせをプログラムで事前計算して保存できます。これにより、より多くのストレージ スペースが必要になりますが、処理能力が低下し、ポストバックがわずかに高速になります。

リクエストごとに画像を生成する場合は、次の方法でビットマップに各画像を描画します。

Bitmap avatarBitmap = new Bitmap(AvatarWidth, AvatarHeight);
using (Graphics g = Graphics.FromImage(avatarBitmap))
{
    foreach (Bitmap bitmap in ListOfImagesToDraw)
    {
        g.DrawImage(bitmap, 0, 0);
    }
}
avatarBitmap.Save(fileName, ImageFormat.Png);

これには、各アイテムが整列できるように、同じサイズのビットマップ内にある必要があります。たとえば、Photoshop ですべての画像を作成する場合、各アイテムを透明な背景を持つ同じ画像のレイヤーにすることができます。次に、バッチ保存を実行して、各レイヤーを独自のファイルに保存できます。

一部の画像が他の画像の上に描画されるように Z オーダーを定義する必要がある場合 (たとえば、頭の後ろではなく頭の上に描画されるサングラス)、ListOfImagesToDraw 配列で画像が正しい順序になっていることを確認してください。この配列は、ポストバックの情報によって生成されます。

于 2012-03-22T21:09:01.113 に答える