1. ホーム
  2. シーピー

GDI+でジェネリックエラーが発生しました@System.Drawing.Image.RotateFlip

2022-02-21 06:03:19

<スパン 問題点

画像表示時に大きな赤い十字が表示されることがある問題

バックエンドのログを見ると、以下のようなエラーが発生しています。

1.
System.OutOfMemoryException: メモリ不足です。
   Graphics.CheckErrorStatus(Int32 status)
   Graphics.DrawImage(Image image, Int32 x, Int32 y, Int32 width, Int32 height)
   Graphics.DrawImage(Image image, Rectangle rect)
   OnPaint(PaintEventArgs pe)
   Control.PaintWithErrorHandling(PaintEventArgs e, Int16 layer)
   Control.WmPaint(メッセージ& m)
   WndProc(Message& m) at System.Windows.
   コールバック(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

2.

System.Runtime.InteropServices.ExternalException (0x80004005)が発生しました。GDI+で一般的なエラーが発生しました。
   RotateFlip(RotateFlipType rotateFlipType) at System.Drawing.

<スパン 分析

1.

Out of memoryが表示される。

このメソッドは、ファイルが有効な画像形式を持っていない場合、またはGDI+がファイルのピクセル形式をサポートしていない場合、OutOfMemoryExceptionを発生させます。

または

メモリが非常に少なく、ソフトウェアが頻繁にリフレッシュされる可能性があります。

2.

GDI+でジェネリックエラーが発生しました。

画像回転のためのRotateFlipメソッド実行中のエラー

<スパン 加工方法

1.

Out of memoryが表示される。

第2処理方法

2.

GDI+でジェネリックエラーが発生しました。

元のコード

img.RotateFlip(RotateFlipType.Rotate180FlipNone);
picImage.Image = img;


変更されたコード

Bitmap bitmap = new Bitmap(img);
bitmap.RotateFlip(RotateFlipType.Rotate180FlipNone);
picImage.Image = bitmap;


大きな赤い十字は時折発生する問題なので、検証には時間がかかります