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
[72180] [질문]PNG 이미지 DB에서 불러오기
궁금이 [] 4452 읽음    2014-12-24 15:44
버전: 빌더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;
}




+ -

관련 글 리스트
72180 [질문]PNG 이미지 DB에서 불러오기 궁금이 4452 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.