[c++] 그림 파일인지 아닌지 알 수 있는 방법 없나요?
글쓴이: hwayak / 작성시간: 월, 2005/03/07 - 10:54오전
c++로 작업하다가 궁금한것이 있습니다.
(g++, vc++ 둘다 해당합니다.)
어떤 파일에 대한 절대 경로를 알고 있을 때, 이 파일이 그림 파일인지 아닌지 알 수 있는 간단한 방법이 없나요?
확장자로만 검사하기에는 너무 허술한거 같아서 말이죠.
혹시 그림 파일 종류(GIF, JPEG, BMP, PNG 등...)마다 확인해야 하는 방법이 모두 동일한가요? 아니면 다른가요?
혹시 같은 그림 파일종류라도 버전이 다른 경우가 있어서 확인해야 하는 방법이 달라져야 하나요? 아니면 그럴 필요가 없는가요?
Forums:
그때 그때 달라요..openil.sourceforge.net
그때 그때 달라요..
openil.sourceforge.net
에 있는 라이브러리를 보면 이미지의 포맷을 판단해주는 함수가 있습니다.
근데, jpg, gif, png, bmp 만 처리할거라면 덩치큰 라이브러리 쓰는것보다 포맷문서보고 간단한게 해더체크하는 프로그램을 짜는게 훨씬 낫겠죠.
Re: [c++] 그림 파일인지 아닌지 알 수 있는 방법 없나요?
모두 틀립니다. BMP 같은 경우 중간에 DM 이라고 마크가 있다거나 뭐, 다 틀리죠. 그 부분을 처리하는 헤더 체크 루틴을 윗엣분 말씀처럼 간단하게 짜는게 좋긴합니다. ^^ 고운 하루되세요.
=========================
CharSyam ^^ --- 고운 하루
=========================
그럼 이런 경우는 어떻게 하나요?
간단하게 GIF 파일 헤더를 체크하는 걸 짜보았는데요.
GIF 파일은 파일 가장 처음에 GIF87a 혹은 GIF89a 라는 문자가 있다고 하네요. 그런데 일반 텍스트 파일의 맨 처음에 GIF87a 혹은 GIF89a 만 써 놓을 경우에도 이 텍스트 파일을 GIF 파일이라고 판명하게 될 수 있지 않나요?
이런 경우는 어쩔 방법이 없는건가요?
file의 소스를 참고하시는 것은 어떨까요?
file의 소스를 참고하시는 것은 어떨까요?
Re: 그럼 이런 경우는 어떻게 하나요?
보통은 그렇죠. 그 시그너처 정도만 보고 판단합니다. 하지만, 보통 이미지 파일마다, 헤더를 보면, 어떤 값들이 가질수 있는 범위라든지 하는걸 이용해서 좀더 제대로 체크할 수 는 있습니다. 고운
하루되세요.
=========================
CharSyam ^^ --- 고운 하루
=========================
file(1)의 소스, 또는 ImageMagick package에 있는
file(1)의 소스, 또는 ImageMagick package에 있는 identify(1)의 소스를 보시는 것도 도움이 될 것 같습니다.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
댓글 달기