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
[72188] Re:[질문]PNG 이미지 DB에서 불러오기
bugfree [bugfree] 4145 읽음    2014-12-25 18:11
궁금이 님이 쓰신 글 :
: 버전: 빌더2010
: DB:MS-SQL2000
:
: 이미지를 DB에 저장했다가 불러오는 모듈을 개발중입니다.
: 기존에 단순 관리업무 모듈만 개발하다가 이미지 처리를 할려니 매우 방황하고 있습니다.
:
: 일단 포럼을 검색해보고 GraphicEx를 설치했습니다.
: 이미지 저장은 잘되는거 같습니다.
:
: 하지만 읽어와서 TImage에 표시하고 싶은데 잘 되지가 않네요.
: JPG는 잘되는거 같은데 PNG파일이 문제네요.
:
: 먼저 제가 사용한 코드를 적어보겠습니다.
: 잘못 된 부분이 있으면 지적 부탁합니다.
:
: 많은분들의 도움 부탁드립니다.
:
: #include <jpeg.hpp>
: #include <GraphicEx.hpp>
:
: //-이미지불러오기
: AnsiString str;
: Edit4->Text=ExtractFileName(OpenPictureDialog1->FileName);
: str=ExtractFileExt(Edit4->Text.Trim());
: if(str.UpperCase() == "PNG")
: {
:     TMemoryStream *ImageBuffer = new TMemoryStream();
:     ImageBuffer->LoadFromFile(OpenPictureDialog1->FileName);
:     TPNGGraphic* png = new TPNGGraphic();
:     png->LoadFromStream(ImageBuffer);
:     Image1->Picture->Bitmap->Assign(png);
:     delete png;
: }
: else
: {
:     Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName);
: }
: //-DB저장
: TMemoryStream *stream1 = new TMemoryStream();
: Image1->Picture->Graphic->SaveToStream(stream1);
: ADOQuery1->Close();
: ADOQuery1->SQL->Clear();
: sql="insert into board1image(wrknum,filename,wrkimage,insid,insdate) values(";
: sql+="'"+wrknum.Trim()+"',";
: sql+="'"+filename.Trim()+"',";
: sql+=":DATA,";
: sql+="'"+WrkID.Trim()+"',";
: sql+="getdate())";
: ADOQuery1->SQL->Add(sql);
: ADOQuery1->Parameters->ParamByName("DATA")->LoadFromStream(stream1,ftBlob);
: ADOQuery1->ExecSQL();
: //-DB불러오기
: TBlobStream *stream1;
: stream1 = (TBlobStream*)ADOQuery3->CreateBlobStream(ADOQuery3->FieldByName("wrkimage"), bmRead);
: FileName=ADOQuery3->FieldByName("filename")->AsString.Trim();
: str=ExtractFileExt(FileName.Trim());
: if(str.UpperCase() == "PNG")
: {
:     TPNGGraphic* png = new TPNGGraphic();
:     png->LoadFromStream(stream1);// <------오류발생하는 부분
:         //오류메세지"Cannot load image.Invalid or unexpected PNG image format."
:     Image1->Picture->Bitmap->Assign(png);
:     delete png;
: }
: else if(str.UpperCase() == "JPG" || str.UpperCase() == "JPEG")
: {
:     TJPEGImage *Jpeg = new TJPEGImage;
:     Jpeg->LoadFromStream(stream1);
:     Image1->Picture->Graphic=Jpeg;
:     delete Jpeg;
: }
:
:
png가 안니고 bmp로 저장되고 있어서 그래요
GraphicEx는 필요 없고요
TPngImage 이용하면 됩니다

+ -

관련 글 리스트
72180 [질문]PNG 이미지 DB에서 불러오기 궁금이 4453 2014/12/24
72188     Re:[질문]PNG 이미지 DB에서 불러오기 bugfree 4145 2014/12/25
72192         Re:Re:[질문]PNG 이미지 DB에서 불러오기 궁금이 3895 2014/12/26
72198             Re:Re:Re:[질문]PNG 이미지 DB에서 불러오기 bugfree 4558 2014/12/27
72199                 Re:Re:Re:Re:[질문]PNG 이미지 DB에서 불러오기 궁금이 4020 2014/12/29
72200                     [답변] DB의 Blob타입 사이즈 정성훈.해미 4074 2014/12/29
72201                         Re:[답변] DB의 Blob타입 사이즈 궁금이 4343 2014/12/29
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.