1

特定の画像に3つのテキストを書きたいです。ローカルホストでは問題ありません。しかし、サーバーでは、すべてを試しましたが、何も変わっていません。常に言う:GDI+で一般的なエラーが発生しました。

画像にテキストを段階的に書き込むと、同じエラーが発生します。最初のテキストを追加した後、最初のテキストで画像を処理しているため、2番目と3番目のテキストを画像に追加できません。

概要:

まず、img1にtext1を追加してDisposeします。次に、img1にtext2を追加してDisposeします。3番目に、img1にtext3を追加してDisposeします。

  using (Bitmap bitmapMasterImage = new Bitmap(stringMasterImageName))
            {
                using (Graphics graphicsMasterImage = Graphics.FromImage(bitmapMasterImage))
                {
                    graphicsMasterImage.DrawString(stringText1, new Font("Arial", 20, FontStyle.Bold), new SolidBrush(colorStringColor), new Point(233, 134), stringformatWriteTextFormat);
                    graphicsMasterImage.DrawString(stringText2, new Font("Arial", 20, FontStyle.Bold), new SolidBrush(colorStringColor), new Point(233, 210), stringformatWriteTextFormat);
                    graphicsMasterImage.DrawString(stringText3, new Font("Arial", 20, FontStyle.Bold), new SolidBrush(colorStringColor), new Point(233, 300), stringformatWriteTextFormat);
                }

                Response.Clear();
                Response.ContentType = "image/jpeg";

                using (MemoryStream stream = new MemoryStream())
                {
                    bitmapMasterImage.Save(stream, ImageFormat.Jpeg);
                    bitmapMasterImage.Save(stringOutPutFileName);
                    stream.WriteTo(Response.OutputStream);
                }
            }

ありがとうございました

4

3 に答える 3

0

通常、このメッセージは次の場合に表示されます。

  • ファイルを保存するための書き込み権限がありません
  • パスが存在しません
  • ファイルは使用中です
于 2012-10-09T13:23:28.400 に答える
0

サーバー上でパスが同じように設定されていることを確認してください (つまり、stringMasterImageName)。また、これは権限/セキュリティの問題である可能性があります。 ここを見て

于 2012-10-09T13:26:01.490 に答える
0

ブラシストリームを閉じてみてください

using (var brush = new SolidBrush(colorStringColor))
{
   ...         
}

または、組み込みのブラシを使用します。これらを閉じる必要はありません。

graphicsMasterImage.DrawString(stringText1, font, Brushes.Black, new Point(233, 134), stringformatWriteTextFormat);
于 2012-10-09T14:32:26.347 に答える