0

以下を使用して、DICOMファイルからオンザフライで画像を生成しています。

   public ActionResult Generatemage()
        {
            FileContentResult data;
.....
    objImage = im.Bitmap(outputSize, PixelFormat.Format24bppRgb, m);

    using (var memStream = new MemoryStream())
    {
        objImage.Save(memStream, ImageFormat.Png);
        data = this.File(memStream.GetBuffer(), "image/png");
    }
      return data;
        }

Point3D を使用して変更できるように、画像をセッション変数として保存できますか? 私は使用しようとしました:

 Bitmap data = (Bitmap)Session["newimage"];

次の 2 つのエラーが発生しました。

Cannot implicitly convert type 'System.Drawing.Bitmap' to 'System.Web.Mvc.FileContentResult' and 
A local variable named 'data' is already defined in this scope

よろしくお願いします。

4

1 に答える 1

0

Point3D を使用して変更できるように、画像をセッション変数として保存できますか?

そうしないことをお勧めします。画像サイズ変更の落とし穴に関するナタナエルの投稿をまだ読んでいない場合は、今すぐ読むことをお勧めします。サイズ変更について話しているかもしれませんが、一般的な画像の操作に関するヒントも示しています。ポイント#3では、次のように述べています。

ファイルをメモリにロードして、ディスクからファイルを提供します。サーバーの RAM の量、1 つの画像のサイズ、ユーザーが画像をダウンロードする前にメモリに保持する必要がある時間、および画像を要求しているユーザーの数を考慮してください。

特定のケースでは、「ユーザーがダウンロードを完了する前」「Point3Dが画像の処理を完了する前」に置き換えることができます。したがって、私が提案するのは、そのファイルへのハンドルを取得することです。おそらく、ユーザーIdごとにファイルを一意に識別するmem.stream で作業)、処理してから破棄します。そのようにして、「Point3D 処理」の間だけ画像を保持します。IdMemoryStream

タイプ 'System.Drawing.Bitmap' を 'System.Web.Mvc.FileContentResult' に暗黙的に変換できません。また、'data' という名前のローカル変数がこのスコープで既に定義されています

それはおそらく、次のように定義dataしたためです。

FileContentResult data;

そして、あなたは次のことをしています:

Bitmap data = (Bitmap)Session["newimage"];

同じスコープ内の 2 つの異なる型の同じ変数。

于 2013-04-23T17:15:36.173 に答える