안녕하세요. 한델 홈을 오랜만에 찾았네요.
지금 간단한 수정건이 있는데, 생각처럼 되질 않아서
Q&A를 찾아봤는데, 마땅한 게시물을 찾을 수 없어
부득이 질문을 올립니다.
두가지 질문을 드리겠습니다. 꼭 답변을 해주셨으면 좋겠네요.
1. 오라클에서 이미지를 저장하려는 경우 사용해야 할 자료형은 ?
현재 디자인된 테이블의 이미지 컬럼은 Long Raw 형식으로 지정
되어 있습니다. 이미 개발 완료된 상태라서 파일경로를 저장하기엔
좀 힘든 상황입니다.
2. Long Raw 형 사용시 BMP와 JPG 동시 저장하는 법은 ?
BMP 파일은 저장/변경이 되나, JPG 파일은 저장이 되질 않습니다.
JPG 저장시 "Bitmap Image is not valid"라는 에러메세지가
표시됩니다. 테이블 컴포넌트를 직접 이용하여 DBImage와 연결하여
처리하고 있습니다. 필드의 속성은 ftBLOB도 사용을 해봤고, ftGraphic도
사용을 해봤습니다.
델파이를 한동안 안했더니, 어렵네요. 위에 두가지 질문에 대한 속시원한
여러분의 도움 기다리겠습니다.
그럼.
급한대로 MS엑세스를 사용해서 OLE 자료형으로 선언하고
BMP와 JPG 파일을 저장해 봤습니다. 저장에는 문제가 없기에
델파이로 코딩을 해봤습니다.
이때 사용한 것이 DBImage였는데, BMP 파일은 아무런 문제가
없이 저장도 되고, 읽기도 됐는데 JPG 파일의 경우는 읽기가 되질
않더군요. DBImage는 BMP 파일만 지원하는 것이 아닌가 생각됩
니다.
결국, 약간의 노가다성 코딩을 하겠됐습니다. Image를 사용하는
방법인데, 문제가 BLOB 필드에 저장되는 이미지가 BMP와 JPG,
JPEG로 다르기 때문에 테이블에 이를 구분하기 위한 필드를 추가했
습니다. 구분 필드값은 오픈픽쳐다이얼로그의 필터인덱스 값을 전달
받아 저장하는 방법으로 처리를 했습니다.
테스트 프로그램에서 문제가 없기에, 실제 모듈에 코딩을 했습니다.
몇가지 사소한 버그를 수정하고 수정된 루틴이 정확히 동작하는지
확인한 결과 다행히도 뜻하던 결과를 보여주더군요.
제가 처리한 다중이미지 처리를 한 방식은
Image를 통해 BMP/JPG/JPEG 파일을 읽은 후, Image의
값을 BLOB 필드에 저장하고, 이미지 구분자를 설정했습니다.
저장된 이미지를 표시할 때는 이미지 구분자에 따라서 BLOB 필드값을
이미지 파일로 저장하고, 저장된 이미지를 Image에 읽어 들이는 방법을
사용했습니다.
좀더 신경을 썼더라면, 스트림을 이용해 처리를 할 수 있었겠지만
급한 불을 끄는 심정으로 노가다 처리를 해버렸습니다.
문제를 해결하고 보니, 그리 어렵지 않은 것이였는데
델파이를 하지 않았던 공백이 생각보다 크다는게 느껴지네요.
그럼.