JPGファイルの幅と高さ

http://esp-pharaoh.cocolog-nifty.com/blog/2008/12/jpegccjava-f26c.html

/**
* JPEGファイルの画像サイズを取得する
*/
bool getJpegSize(LPCTSTR path, UINT* width, UINT* height)
{
FILE* f = _tfopen(path, _T("rb"));
if(!f) return false;

UINT c;// 32bit

// 先頭が 0xFFD8 か
if((c = getc(f)) != 0xFF){ fclose(f); return false; }
if((c = getc(f)) != 0xD8){ fclose(f); return false; }

UCHAR cb[8];// 8bit x [8]

while(c != 0xDA)
{
// 0xFF を探す
while(c != 0xFF)
{
if((c = getc(f)) == EOF) break;
}

// 0xFFFF ならデータなので無視
while(c == 0xFF)
{
if((c = getc(f)) == EOF) break;
}

// 0xFFC0 ~ 0xFFC3 なら SOFマーカー
if(0xC0 <= c && c <= 0xC3)
{
if(fread(cb, 1, 3, f) < 3) break;
if(fread(cb, 1, 4, f) < 4) break;

*width  = ((UINT)cb[2] << 8) | cb[3];// 2バイト
*height = ((UINT)cb[0] << 8) | cb[1];// 2バイト

fclose(f);
return true;
}
else
{
// データサイズ 2バイト
if(fread(cb, 1, 2, f) < 2) break;

// len自体(データサイズ2バイト)を含む)
UINT len = ((UINT)cb[0] << 8) | cb[1];
if(len < 2) continue;

// データ
while(len-- > 2){// (len - 2)バイトをスキップする
c = getc(f);
}
}
}

fclose(f);
return false;
}
最終更新:2012年04月25日 10:56
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。