C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[41286] Re:Re:Re:jpeg file 이 정말 jpg 화일인지 구분할 수 있나요?
유영인 Cuperido [cuperido] 1060 읽음    2005-08-01 18:33
깨진 Jpeg을 로딩하면 문제가 좀 있는것 같군요.
그것도 정확히 그 라인에서 문제가 생기는것이 아니라, 함수가 빠져 나올때
생겨서 Try-Catch 문에 걸리지 않는것 같습니다.

그래서, OnException을 이용해서 에러를 검출하는 방법을 택했습니다.
사용하시면서 이벤트를 걸었다 뺐다 하는 방법도 있고, 이벤트 내에서
메시지로 분기해서 에러를 처리하는 방법도 있을 것 같습니다.


cuperido

//---------------------------------------------------------------------------

#include <vcl.h>
#include <jpeg.hpp>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;


//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{

// 에러 이벤트 설정
Application->OnException = ExceptionFilter;
}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{

try {
   Image1->Picture->LoadFromFile("C:\\download\\test.jpg");
  } catch (...) {
   ShowMessage("오마이갓");
}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::ExceptionFilter(TObject *Sender, Exception *ExceptionCode)
{

// 에러 메시지를 보고 분기
if(ExceptionCode->Message.Pos("JPEG") > 0) {
   ShowMessage("Jpeg 파일 에러");
}

return;

}



HUMANLSH 님이 쓰신 글 :
: 유영인님 답변 정말 감사합니다.
: 제가 잘못된 jpeg 화일을 걸르려고 사실
:                      try {
:                      MultiVideoForm->imgMonitor->Picture->LoadFromFile(strFilename);
:                       }
:                      catch (EInvalidGraphic &e) {}
: // 혹은          catch (...) {}
:
: 이렇게 코드를 썼는데
: catch에 걸리지 않고
: 로드하는데서 바로
: JPEG error #67
: 에러 다이알로그 박스가 뜨더군요..
: 이 에러박스 좀 없앨 수 있는 방법이 없을까요?
: 부탁드립니다..
: 첨부는 깨진 jpg 화일입니다..
:
: ======================
:
: 유영인  Cuperido 님이 쓰신 글 :
: : 가장 좋은 방법은 예외처리 try ... catch 를 걸어서 파일을 로드하는 방법이라고 생각하고요,
: : 미리 파일 형식 검출을 하시려면, 정확한 포맷은 컴포넌트에서 제공하는 IsJpegFile 등과 같은
: : 지원 함수가 있으면 사용하시거나,  그렇지 않으면 파일의 앞부분 일부를 읽어서
: : 헤더 비교를 하는 방법이 있습니다.
: :
: : 제가 본 거의 모든 Jpeg은 6~9 Bytes 에 'JFIF' 라는 문자가 들어가 있고요,
: : 이런걸 비교해서 하는 방법이 있겠죠. 하지만, 혹시 행여나 다른 사용자가 사용했던 툴이
: : Jpeg 헤더 기준을 따르지 않았다면, 이 역시 로드될 수 없겠지요.
: : (그럴 가능성도 어쩌면 배재할수는 없겠죠? ^^)
: :
: :
: : cuperido
: :
: : HUMANLSH 님이 쓰신 글 :
: : : 디스크안에 있는 jpg 화일이 실지로 로드될 수 있는 jpeg 화일 format 인지
: : : 구분할 수 있는 방법이 있나요?
: : :
: : : LoadFromFile 함수를 쓰면 간혹 에러나는 화일이 있어 load하기전에 skip 하려구요..
: : :
: : : 부탁드립니다.

+ -

관련 글 리스트
41274 jpeg file 이 정말 jpg 화일인지 구분할 수 있나요? HUMANLSH 793 2005/07/29
41291     Re:jpeg file 이 정말 jpg 화일인지 구분할 수 있나요? utime.김성하 919 2005/08/02
41276     Re:jpeg file 이 정말 jpg 화일인지 구분할 수 있나요? 유영인 Cuperido 847 2005/07/29
41284         Re:Re:jpeg file 이 정말 jpg 화일인지 구분할 수 있나요? HUMANLSH 1063 2005/08/01
41286             Re:Re:Re:jpeg file 이 정말 jpg 화일인지 구분할 수 있나요? 유영인 Cuperido 1060 2005/08/01
41304                 Re:답변 감사드립니다.. HUMANLSH 822 2005/08/03
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.