단순히, 파일 사이즈와 팔레트를 원하신다면, 다음과 같은 방법은 어떠신가요..?
1) 파일 사이즈
파일 크기는 빌더의 fseek의 도움말의 example 을 보시면 filesize 를 구할 수 있는 방법이 나와 있습니다. API도 있고요. 편하신것으로 사용하시면 될 것 같네요. 해당 JPEG 파일의 크기를 알면 되겠지요.
2) 팔레트
기본적으로 JPEG는 GetPalette라는 메소드를 가지고 있습니다. 아래는 그 GetPalette의 소스입니다. 델파이 입니다.
function TJPEGImage.GetPalette: HPalette;
var
DC: HDC;
begin
Result := 0;
if FBitmap <> nil then
Result := FBitmap.Palette
else if FTempPal <> 0 then
Result := FTempPal
else if FPixelFormat = jf24Bit then // check for 8 bit screen
begin
DC := GetDC(0);
if (GetDeviceCaps(DC, BITSPIXEL) * GetDeviceCaps(DC, PLANES)) <= 8
then
begin
// next line is bug fix - re:
borland.public.delphi.vcl.components
// Steven Trefethen 21 Aug 1997
if FTempPal <> 0 then DeleteObject(FTempPal);
FTempPal := CreateHalftonePalette(DC);
Result := FTempPal;
end;
ReleaseDC(0, DC);
end;
end;
이곳으로 가시면, 더욱 깊이있는 정보를 얻으실 수 있습니다.
http://www.wotsit.org/
김동욱 님이 쓰신 글 :
: 답변 감사합니다.
:
: 파일 크기나 팔레트등의 정보는 어떻게 알 수 있나요?
:
: FFC000까지의 데이터는 무었인가 궁금하네요?
:
: 이런 자료는 어떻게 찾나요?
:
: ??????
:
: 요즘 저의 무식함이 더욱 돋보이는것 같군요.
:
: 오늘 하루도 건강하시고 즐거운 하루되세요.
:
: 유영인 [Chris] 님이 쓰신 글 :
: : Jpeg는 헤더를 알아낸다 하더라도, Bitmap과 같이 손쉬운 처리를 할 수 없습니다. 양자화 및 마커, 허프만 기법등을 사용하여 데이터를 손실, 혹은 복구하여야 합니다. 아무튼 Jpeg에도 헤더는 있습니다. FFC000 다음부터 시작하는 코드가 Header 입니다.
: :
: : unsigned short Height; // Height
: : unsigned short Width; // Width
: : unsigned char Number; // 헤더 갯수. 이 숫자만큼 아래 정보가 반복됩니다.
: :
: : unsigned char ID[3]; // 헤더 이름.
: : unsigned char H[3]; // 가로 연산 인자
: : unsigned char V[3]; // 세로 연산 인자
: : unsigned char dTable[3]; // 양자화 테이블 번호
: :
: : Jpeg가 가지고 있는 테이블 정보만 약 5개 정도가 됩니다. 이 것들을 전부 알아야 디코딩이 가능하며, 단순히 헤더 정보만 원하실때는, 헤더정보에서 필요하신 부분만 따로 빼내는 식으로 코딩하시는 것이 더 빠른 작업을 하실 수 있을 것 같네요.
: :
: :
: : 김동욱 님이 쓰신 글 :
: : : TJPEGImage에는 BITMAPINFO와 같은 헤더가 없나요?
: : :
: : : 엄청 궁금한데 설명된곳이 없네요.
: : :
: : : 아시는 분있으면 가르쳐 주세요.
: : :
: : : 즐거운 하루 되세요.