1

GDI+ を使用してファイルを保存しようとしていますが、「GDI+ で一般的なエラーが発生しました」という例外が発生します。コードはほぼすべての写真で正常に機能しますが、これは 1 日に何千枚も処理していますが、これは私が聞いた最初のものです)。私はそれがexifデータと関係があるかもしれないし、おそらく写真家のカメラや編集者から何か奇妙なものがあると思う.

問題の写真がこちら

そして、この写真でエラーを再現するコードは次のとおりです。

class Program
{
    static void Main(string[] args)
    {
        using (var img = Image.FromFile("Err.jpg"))
        using (var ms = new MemoryStream())
        {
            img.Save(ms, ImageFormat.Jpeg);
        }
    }
}

GDI+ でこれを処理するにはどうすればよいですか? 問題の原因となっている余分なものを取り除く方法はありますか?

4

2 に答える 2

0

最初に画像を bmp に変換すると問題が解決するようです。より効率的な方法 (複数の画像を作成してメモリにロードする必要がない) を見つけるのは良いことですが、これは私がこれまでに見つけた中で最高のものです。

static void Main(string[] args)
{
    var path = @"gdi_err.jpg";
    using (var img1 = Image.FromFile(path))
    using (var ms1 = new MemoryStream())
    {
        img1.Save(ms1, ImageFormat.Bmp);
        ms1.Position = 0;
        using (var img2 = Image.FromStream(ms1))
        using (var ms2 = new MemoryStream())
        {
            img2.Save(ms2, ImageFormat.Jpeg);
        }
    }
}
于 2013-06-18T23:59:30.257 に答える