奇妙な GDI+ エラーを数日間追跡した後、 MSDNでこの小さな宝石を見つけました。
System.Drawing 名前空間内のクラスは、Windows または ASP.NET サービス内での使用はサポートされていません。これらのアプリケーション タイプのいずれかからこれらのクラスを使用しようとすると、サービス パフォーマンスの低下やランタイム例外など、予期しない問題が発生する可能性があります。
このコンテキストで「ASP.NET サービス」が「Web アプリケーション」を意味するかどうかはわかりませんが、「サービス パフォーマンスの低下」は、「GDI+ で一般的なエラーが発生しました」エラーと「メモリ不足」エラーのランダムな組み合わせをカバーしているようです。私のアプリがスローしていること - 多くの場合、最初に System.Drawing.Imaging によって実際に作成された JPEG 画像の読み取りと書き込みの断続的で再現性のないエラー。
では、Web アプリで GDI+ が JPEG ファイルを確実に読み書きできない場合、代わりに何を使用すればよいでしょうか?
ユーザーが画像をアップロードし (JPEG が必要、その他の形式があると便利)、それらを確実に再サンプリングし、問題が発生した場合に有用なエラー メッセージを表示できるようにしたいと考えています。何か案は?WPF の System.Media 名前空間は検討する価値がありますか?
編集:ええ、GDI +が「ほとんどの場合」機能することは知っています。失敗した場合、正常に分離または回復することが不可能な方法で失敗するため、これでは十分ではありません。あなたに役立つ GDI+ コードの例には興味がありません。画像処理に使用する代替ライブラリを探しています。