저번엔 정신이 없어서 제대로 못봤는데... (지금도 정신이 없습니다만.. --)
다음과 같이 하면 될 겁니다.
TBlobStream *bs;
bs = new TBlobStream((TBlobField *)(ClientDataSet2->FieldByName("PHOTO")), bmRead);
dynamic_cast<TJPEGImage *>(DBImage1->Picture->Graphic)->LoadFromStream(bs);
(TJPEGImage 객체를 만들어서 불러들이고 다시 Assign하고 할 필요가 없네요)
그럼...
죄악 님이 쓰신 글 :
: ㅜㅜ 감솨함돠...암두 관심을 가져주시지 않았는데..
:
: 이렇게 또 질문드리는데 죄송하네요...
:
: 아래와 같이...주석부분도 다해봤습니다...
:
: 깊이 있는 공부를 안하다 보니...이것저것 다 해보게 되는군요..
:
: 제가 데이타베이스만 잡고 있다가 프로그램도 할라니...참 힘드네요..
:
: 한번만 더 봐주시면 감사하겠습니다....
:
: 완전한 예제를 보여주시면 더 감사하구요(너무 무리한 부탁이죠? 질문자의 특성인가 봅니다.)
:
: (근데...책 언제 나오나요? 오라클에 이미지나 파일 집어넣구..검색하는 것도
:
: 나오나요?? 그것만 나와도 당장 달려가 책 사볼텐데 말이죠.. ^^)
:
: ClientDataSet2->Params->Items[0]->Value = Edit1->Text;
: ClientDataSet2->Open();
:
: //dynamic_cast<TJPEGImage *>(Image1->Picture->Graphic)->Assign(ClientDataSet2->FieldByName("PHOTO"));
: //Image1->Picture->Assign(ClientDataSet2->FieldByName("PHOTO"));
: //dynamic_cast<TJPEGImage *>(Image1->Picture->Graphic);
: //dynamic_cast<TJPEGImage *>(DBImage1->Picture->Graphic)->Assign(jpg);
:
:
: TBlobStream *bs;
: TJPEGImage *jpg;
:
: bs = new TBlobStream((TBlobField *)(ClientDataSet2->FieldByName("PHOTO")), bmRead);
:
: jpg = new TJPEGImage;
: jpg->LoadFromStream(bs);
:
:
: //dynamic_cast<TJPEGImage *>(DBImage1->Picture->Graphic)->Assign(jpg);
: //(Image1->Picture->Graphic)->Assign(jpg);
: //dynamic_cast<TJPEGImage *>(Image1->Picture->Graphic)->Assign(jpg);
: //((TJPEGImage *)(Image1->Picture->Graphic))->Assign(jpg);
: Image1->Picture->Graphic->Assign(jpg);
:
:
: delete jpg;
: delete bs;
:
:
:
: 박지훈.임프 님이 쓰신 글 :
: : TImage나 TDbImage의 Picture는 TPicture 타입인데요.
: : 이넘이 기본으로는 JPG를 지원 안하기 때문입니다.
: :
: : 하도 오래되어서 기억이 넘 가물거리는데... (3년 정도 전에 자주 질문받던 내용...)
: : JPG 이미지는 TJPEGImage 타입으로 캐스팅을 해야 됩니다.
: :
: : 그리고.. '=' 을 써서 집어넣을 수 있는 것이 아니라.. Assign() 함수를 써야 합니다.
: : 대충 기억나는대로 끄적거려보면...
: : ((TJPEGImage *)(Image1->Picture->Graphic))->Assign(jpg);
: : 이렇게 해야 하는 거 같은데...
: :
: : 다음 글도 참고하세요..
: :
http://www.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=655
: :
: : 잘 안되시면 다시 질문해주세요.
: : 제가 지금 27시간째 잠을 못자고 있어서 좀 헤롱거립니당...
: :
: : 그럼...
: :
: :
: :
: : 죄악 님이 쓰신 글 :
: : :
: : : 개발 환경은 3-Tier 이고, 빌더6을 사용하고 있습니다.
: : :
: : : 클라이언트 <-> App 서버 <-> DB 서버
: : :
: : : DBMS는 오라클입니다..
: : :
: : : 일단 테이블은 varchar2 컬럼과 long raw 컬럼 두개 입니다..테스트용으로 만들었습니다..
: : :
: : : #include <jpeg.hpp> 했구요..
: : :
: : : 아래와 같이 코드를 작성했습니다...일단 데이타베이스에 들어가는 것 같기는 합니다..
: : :
: : : 그런데 아래의 코드를 실행하면 jpeg error #52 에러가 뜨네요..
: : :
: : :
: : : ==========================================================================================
: : :
: : : void __fastcall TForm1::Button2Click(TObject *Sender) // DB에 저장
: : : {
: : : ClientDataSet1->Params->Items[0]->Value = Edit1->Text;
: : : ClientDataSet1->Params->Items[1]->LoadFromFile(Edit2->Text.c_str(),ftBlob);
: : : ClientDataSet1->Execute();
: : : ClientDataSet1->Close();
: : :
: : : //어플리케이션 서버에서..
: : : //insert into test3(student_num, photo) values(:student_num, :photo);
: : :
: : : }
: : : //---------------------------------------------------------------------------
: : :
: : : void __fastcall TForm1::Button3Click(TObject *Sender) //DB에서 불러오기
: : : {
: : : ClientDataSet2->Params->Items[0]->Value = Edit1->Text;
: : : ClientDataSet2->Open();
: : :
: : : //어플리케이션 서버에서..
: : : //select photo from test3 where student_num = :student_num
: : :
: : : TClientBlobStream *bs;
: : : TJPEGImage *jpg;
: : : bs = new TClientBlobStream((TBlobField *)(ClientDataSet2->FieldByName("PHOTO")), bmRead);
: : :
: : : jpg = new TJPEGImage;
: : : jpg->LoadFromStream(bs);
: : :
: : : Image1->Picture->Graphic = jpg;
: : :
: : :
: : : delete jpg;
: : : delete bs;
: : :
: : :
: : : }
: : : //---------------------------------------------------------------------------
: : :
: : :
: : : ==========================================================================================
: : :
: : :
: : :
: : : 그리고 아래와 같이 해보았더니 역시 'Bitmap image not valid'에러가 뜨는 군요..
: : :
: : : ClientDataSet2->Params->Items[0]->Value = Edit1->Text;
: : : ClientDataSet2->Open();
: : : mage1->Picture->Assign(ClientDataSet2->FieldByName("PHOTO"));
: : :
: : : 음...환장하것네요...
: : :
: : : 외국의 뉴스그룹도 찾아보고 했는데도 당췌 모르겠네요..
: : :
: : : 여유있으실때 해결의 실마리가 될만한 단어라도 꼭 알려주세요...
: : :
: : : 한달동안 이짓만 하고 있네요...헐헐~(그냥 넋두리 임돠..)
: : :
: : : 읽어 주셔서 감사하구요...행복한 하루되시길 바랍니다..