【お知らせ】プログラミング記事の投稿はQiitaに移行しました。

画像サイズを取得

以前(id:n7shi:20090519)C言語で外部ライブラリなしにJPEGの画像サイズを取得しましたが、同じことをC#でもやってみました。イメージを展開せずサイズだけ知りたいときに便利かもしれません。パブリックドメインです。

public static Size GetJpegSize(string jpg)
{
    using (var fs = new FileStream(jpg, FileMode.Open))
    {
        var buf = new byte[8];
        while (fs.Read(buf, 0, 2) == 2 && buf[0] == 0xff)
        {
            if (buf[1] == 0xc0 && fs.Read(buf, 0, 7) == 7)
                return new Size(buf[5] * 256 + buf[6], buf[3] * 256 + buf[4]);
            else if (buf[1] != 0xd8)
            {
                if (fs.Read(buf, 0, 2) == 2)
                    fs.Position += buf[0] * 256 + buf[1] - 2;
                else
                    break;
            }
        }
    }
    return Size.Empty;
}