Q&A

  • BPL 모듈에서 JPEG 이미지 사용방법
이번에 조그마한 프로젝트에 참여하게 되었는데요.
기존에 델파이로 개발되어진 곳에서 일부분의 기능을 추가하는 겁니다.

그 중에 FTP 서버에 로그인해서 이미지(BMP, JPG) 를 가지고와서 보여주어야 하는 모듈이 있는데요.
이 프로그램이 전부 모듈별로 BPL로 나뉘어져 개발되어져 있습니다.

처음에 Indy 를 사용하면 쉽기만 한 FTP 가 되질 않아 별 방법을 다 써보다가
결국은 그냥 윈도우 api 로 해결을 하였습니다.  WinInet 아시죠?  

이미지파일은 갖고 왔겠다.. 적당한 디렉토리에 저장한 다음 보여주기만 하면 되는데...
처음... bmp 파일은 잘 나왔습니다.  너무 당연하죠.
그런데 jpg 파일을 갖고 올려고 했더니만 "Unknown picture file extension (.jpg)"  요렇게 나옵니다.
그냥 TImage 하나 올려놓고 LoadFromFile 하면 당연히 나와야 할것인데요..  ㅠ.ㅠ

이제 폼에 테스트로 TOpenPictureDialog 를 하나 놓고 파일을 열어서 선택하여 볼려고 했습니다.
그런데...  파일 형식에 jpg 는 안보이고 (bmp, ico, emf, wmf) 요렇게만 나오고.. 강제로 jpg 파일명을
입력하여 보면 마찬가지의 에러가 나오고...

이 모든것이 BPL 모듈분할때문인거 같은데요.  BPL 로 분할 개발시 이렇게 제약사항이 많나요?
컴파일은 다 잘 되는데.. 막상 사용할려고 하면 이러니.. 돌아버리겠네요.

도움좀 주세요~~~
3  COMMENTS
  • Profile
    최용일 2007.11.29 02:11
    모듈분할하고는 상관이 없습니다.
    그냥 uses절에 jpeg유닛만 추가해주시면 됩니다.

  • Profile
    솔비 2007.11.29 04:51
    헉..   답변글 달린거 보고 좋아서 클릭했다가 좌절.. OTL

    설마 제가 JPEG 추가를 빠트렸을라구요.
    그거 빠뜨리면 컴파일시에도 에러가 나지 않나요?  글구...  일부러 지우고 해도
    컴파일 하는 순간에 자동적으로 추가되는데...

    한번만 더 제 질문요지를 잘 읽어주시고 답변 주시면 감사하기 이를데 없겠네요.

    TOpenPictureDialog 를 추가하고 필터를 이것저것 (아래와같이) 아무리 추가해줘도 실제 오픈되면서 나오는 파일형식에는  bmp, ico, emf, wmf  요거 네개만 보이구요.

    All (*.gif;*.ani;*.pcx;*.gif;*.jpg;*.jpeg;*.bmp;*.ico;*.emf;*.wmf)|*.gif;*.ani;*.pcx;*.gif;*.jpg;*.jpeg;*.bmp;*.ico;*.emf;*.wmf|CompuServe GIF Image (*.gif)|*.gif|ANI Image (*.ani)|*.ani|PCX Image (*.pcx)|*.pcx|CompuServe GIF Image (*.gif)|*.gif|JPEG Image File (*.jpg)|*.jpg|JPEG Image File (*.jpeg)|*.jpeg|Bitmaps (*.bmp)|*.bmp|Icons (*.ico)|*.ico|Enhanced Metafiles (*.emf)|*.emf|Metafiles (*.wmf)|*.wmf

    강제로 jpg 같은 파일을 선택해도 에러메시지가 나오면서 안됩니다.

    다시한번 말씀드리지만 일반 모듈에서는 너무나 잘~~  나옵니다.

    하다하다 안되면 이것도 윈도 GDI api 를 이용해서 읽어들이고 뿌리는 수밖에 없을듯 하네요.  ㅠ.ㅠ

  • Profile
    최용일 2007.11.29 18:56
    쩝~

    "Unknown picture file extension (.jpg)"  에러는 JPEG파일이 이미지형식으로 델파이에 등록이 안되어서 나는 에러가 맞습니다. JPEG이미지를 불러서 쓰는 곳에 JPEG유닛을 추가하시면 됩니다. 제가 볼때는 BPL로 나뉘어져 있다고 하시니까 BPL쪽에 추가가 안되어 있거나 혹은 메인 모듈 쪽에 추가가 안되어 있을것 같습니다.

    TOpenPictureDialog의 Filter속성은 기본적으로 폼리소스에 저장이 안되도록 되어 있습니다. 기본동작이 런타임시에는 등록된 이미지형식의 확장자만  필터에 나타나도록 되어 있습니다. 보이는 네가지 확장자중 jpeg가 없다는 것은 jpeg유닛을 사용하지 않으셔서 jpeg파일이 델파이에 등록이 안되었다는 것을 보여주죠...

    필터관련해서는 TOpenPictureDialog.Execute; 전에 필터를 다시 셋팅해주시면 됩니다.

    참고로 JPEG유닛을 빼먹더라도 TJpegImage클래스등 JPEG유닛에 있는 클래스등을 사용하지 않으시면 컴파일시에 에러가 나지는 않습니다.