1

次のコード (Dolph Larson の功績) を使用して、ASP.net サーバー上でビットマップ形式の既製の画像ファイルを取得し、その上に文字列を描画して、サーバー上のファイルに保存します。元のコードでは、彼はビットマップを OutputStream にダンプしますが、代わりにファイルにダンプしたいと思います。

以下のバージョンのコードは新しいファイルを正常に作成しますが、それを開くと、新しいファイルの画像に文字列が描画されません。ステップが欠けていると思います-bitMapImage.Save("bitmaptest.jpg", ImageFormat.Jpeg)を使用すると、変更されたバージョンではなくオリジナルを再保存するだけですか?

コードは次のとおりです。

        //Load the Image to be written on.
        Bitmap bitMapImage = new
        System.Drawing.Bitmap(Server.MapPath("generic.jpg"));
        Graphics graphicImage = Graphics.FromImage(bitMapImage);
        graphicImage.SmoothingMode = SmoothingMode.AntiAlias;
        graphicImage.DrawString("testing 1 2 3",
        new Font("Arial", 20, FontStyle.Bold),
        SystemBrushes.WindowText, new Point(0, 0));
        Response.ContentType = "image/jpeg";
        bitMapImage.Save("bitmaptest.jpg", ImageFormat.Jpeg);
        graphicImage.Dispose();
        bitMapImage.Dispose();

前もって感謝します!

4

2 に答える 2

2

あなたのコードは問題なく動作します。画像を保存するパスを指定するだけです。

例:

//Load the Image to be written on.
        Bitmap bitMapImage = new
        System.Drawing.Bitmap((@"c:\\foo\\generic.jpg"));
        Graphics graphicImage = Graphics.FromImage(bitMapImage);
        graphicImage.DrawString("testing 1 2 3",
        new Font("Arial", 20, FontStyle.Bold),
        SystemBrushes.WindowText, new Point(0, 0)); 
        bitMapImage.Save("c:\\foo\\bitmaptest.jpg", ImageFormat.Jpeg);
        graphicImage.Dispose();
        bitMapImage.Dispose();

注:あなたの場合、bitMapImage.Save は次のようにする必要があります: bitMapImage.Save(Server.MapPath("~/Images")+"newImage.jpg",ImageFormat.Jpeg);asp.net アプリに画像を保存しようとしているためです。私の例では、アプリ内~/Imagesの仮想ディレクトリです。Images

于 2012-05-24T01:03:29.580 に答える
1

はい..同じ画像を保存しています。新しい wbitmap を作成して保存する必要があります:-

Bitmap bitMapNew = Bitmap.FromHbitmap(graphicImage.GetHdc());
bitMapNew.Save("bitmaptest.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);

bitMapImage.save の代わりにこれらの行を追加します

于 2012-05-24T01:01:19.160 に答える