Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[10380] Re:Re:Re:이미지화일이 깨진상태로 저장됩니다. 부탁합니다. 답변감사합니다. 하지만
박진수 [jeensoo] 1769 읽음    2005-12-01 16:55
A_Jpeg 의 타입이..  TJPegImage 인지요..?

제가 단 리플의 imgUSERD1_STAMPIMG는 타입이 TImage 입니다.
이것을 가지고 blob 으로 저장했을시에 gif,jpg,bmp 모두 이상없이 저장되었습니다.
사용한 데이터베이스는 ms-sql 7 입니다.
데이터 베이스에 상관없이 blob 필드로 된 필드에는 모두 저장될텐데요.

일단 A_jpeg의 타입이 TJPegImage 라면   TImage로 해서 저장을 해보시구요.
읽어들일땐 각각의 저장되었던 타입별로 읽어내시면 될텐데요..

          with aqryBLRM_USERD1 do
          begin
               Screen.Cursor := crSQLWait;
               if(Active) then Close;
               SQL.Clear;
               SQL.Text :=
               ' SELECT * FROM  BLRM_USERD1  '+#13+
               '  WHERE USERD1_NO = 0'+ txtUSER_NO.Text +'   ';
               Open;
               cmbGRCLASS.Properties.ReadOnly := False;
               i := FieldByName('USERD1_CLASS').AsInteger;
               cmbGRCLASS.ItemIndex := i;
               cmbGRCLASS.Properties.ReadOnly := True;
               //-----
               MemoryStream := TMemoryStream.Create;
               if(i = 0) then // BitMap
               begin
                    BMapImg := TBitMap.Create;
                    aqryBLRM_USERD1USERD1_STAMPIMG.SaveToStream(MemoryStream);
                    MemoryStream.Position := 0;
                    BMapImg.LoadFromStream(MemoryStream);
                    imgUSERD1_STAMPIMG.Picture.Assign(BMapImg);
                    BMapImg.Free;
               end;
               if(i = 1) then // JPEG
               begin
                    JPegImg := TJPegImage.Create;
                    aqryBLRM_USERD1USERD1_STAMPIMG.SaveToStream(MemoryStream);
                    MemoryStream.Position := 0;
                    JPegImg.LoadFromStream(MemoryStream);
                    imgUSERD1_STAMPIMG.Picture.Assign(JPegImg);
                    JPegImg.Free;
               end;
               if(i = 2) then // GIF
               begin
                    GIFImg := TGIFImage.Create;
                    aqryBLRM_USERD1USERD1_STAMPIMG.SaveToStream(MemoryStream);
                    MemoryStream.Position := 0;
                    GIFImg.LoadFromStream(MemoryStream);
                    imgUSERD1_STAMPIMG.Picture.Assign(GIFImg);
                    GIFImg.Free;
               end;
               MemoryStream.Free;
               Screen.Cursor := crDefault;
          end;


이동안 님이 쓰신 글 :
: 저도 여러 경우로  수정을 하였는데 첨부파일에 보면 에라가 발생하네요
: 감사합니다.
: 또 bmp파일인경우는 처음에 완벽하지는 않지만 저장은 되네요 그리고 2번째 이미지파일을 저장할 경우 검정색으로
: 변합니다.
: 첨부파일의 경우는 확장자가 jpg일 경우입니다.
: 다른방법이나 에라 해결책은 없는지요
:
:         With P_a_DataF.Q1 Do Begin
:              SQL.Clear;
:              SQL.Text :=' Update Pan41                    '+#13+
:                                '      Set H_Jpeg = :A_Jpeg   '+#13+
:                                ' Where H_Hyun = :A_Hyun  '+#13;
:              aMs := TMemoryStream.Create;
:              A_Jpeg.Picture.Graphic.SaveToStream(aMs);
:              ParamByName('A_Hyun').AsString := A_Hyun.Text;
:              ParamByName('A_Jpeg').LoadFromStream(aMs, ftblob);
:              aMs.Free;
:              ExecSQL;
:         end;
:
:
:
:
:
:
: 박진수 님이 쓰신 글 :
: : 도움이 되실런지요..
: :
: :           Screen.Cursor := crSQLWait;
: :           with aqryBLRM_USERD1 do
: :           begin
: :                if(Active) then Close;
: :                SQL.Clear;
: :                SQL.Text :=
: :                ' DELETE FROM BLRM_USERD1  '+#13+
: :                '  WHERE USERD1_NO = 0'+ txtUSER_NO.Text +'   ';
: :                ExecSQL;
: :                //-----
: :                if(imgUSERD1_STAMPIMG.Picture.Graphic <> nil) then
: :                begin
: :                     if(Active) then Close;
: :                     SQL.Clear;
: :                     SQL.Text :=
: :                     ' INSERT INTO BLRM_USERD1 (     '+#13+
: :                     '    USERD1_NO,                 '+#13+
: :                     '    USERD1_CLASS,              '+#13+
: :                     '    USERD1_STAMPIMG ) VALUES ( '+#13+
: :                     '    0'+ txtUSER_NO.Text +',    '+#13+
: :                     '    0'+ IntToStr(cmbGRCLASS.ItemIndex) +',    '+#13+
: :                     '    :USERD1_STAMPIMG )    '+#13;
: :                     MemoryStream := TMemoryStream.Create;
: :                     imgUSERD1_STAMPIMG.Picture.Graphic.SaveToStream(MemoryStream);
: :                     Parameters[0].LoadFromStream(MemoryStream, ftBlob);
: :                     MemoryStream.Free;
: :                     ExecSQL;
: :                end;
: :           end;
: :           Screen.Cursor := crDefault;
: :
: :
: :
: : 이동안 님이 쓰신 글 :
: : : 소스는 아래와 같습니다.
: : : 확인 해보니 저장자체가 깨진상태로 저장됩니다.
: : : 도움좀 부탁합니다.
: : : delphi 6.0
: : : mysql 3.23.53
: : : myisam file
: : : c/s환경
: : : field type은 blob 또는 longblob으로 하였습니다.
: : :
: : : /////////////////////////////////////////////////////////////////////////////////
: : : procedure TP_i_HyunJangiF.PictureToSave;
: : : Var  aBmp : TBitmap;
: : :        aR      : TRect;
: : :        aMS   : TMemoryStream;
: : : Begin
: : :      if Not (A_Jpeg.Picture.Graphic = Nil) Then Begin
: : :         Try
: : :            aBmp := TBitmap.Create;
: : :            aBmp.FreeImage;
: : :            aBmp.PixelFormat := pf24bit;
: : :            aBmp.Height      := A_Jpeg.Picture.Height; //120;
: : :            aBmp.Width       := A_Jpeg.Picture.Width ; //120;
: : :            aR := Rect(0, 0, aBmp.Width, aBmp.Height);
: : :            aBmp.Canvas.StretchDraw(aR, A_Jpeg.Picture.Graphic);
: : :            With P_a_DataF.Q1 Do Begin
: : :                 SQL.Clear;
: : :                 SQL.Add('Update Pan41                     ');
: : :                 SQL.Add('   Set H_Jpeg = :A_Jpeg      ');
: : :                 SQL.Add(' Where H_Hyun = :A_Hyun  ');
: : :                 aMS := TMemoryStream.Create;
: : :                 aMS.Position := 0;
: : :                 aBmp.SaveToStream(aMS);
: : :                 Try
: : :                    ParamByName('A_Hyun').AsString := A_Hyun.Text;
: : :                    ParamByName('A_Jpeg').LoadFromStream(aMS, ftblob); //ftblob를 ftGraphic로 변경도 시도 똑같음
: : :                    ExecSQL;
: : :                 Finally
: : :                    aMS.Free;
: : :                 End;
: : :                 Close;
: : :            End;
: : :         Finally
: : :            aBmp.Free;
: : :         End;
: : :      End;
: : : end;

+ -

관련 글 리스트
10374 이미지화일이 깨진상태로 저장됩니다. 부탁합니다. 이동안 1190 2005/12/01
10375     Re:이미지화일이 깨진상태로 저장됩니다. 부탁합니다. 박진수 1409 2005/12/01
10376         Re:Re:이미지화일이 깨진상태로 저장됩니다. 부탁합니다. 답변감사합니다. 하지만 이동안 1174 2005/12/01
10380             Re:Re:Re:이미지화일이 깨진상태로 저장됩니다. 부탁합니다. 답변감사합니다. 하지만 박진수 1769 2005/12/01
10377             Re:Re:Re:이미지화일이 깨진상태로 저장됩니다. 부탁합니다. 답변감사합니다. 하지만 civilian,안영제 1240 2005/12/01
10378                 Re:Re:Re:Re:이미지화일이 깨진상태로 저장됩니다. 부탁합니다. 답변감사합니다. 하지만 이동안 1053 2005/12/01
10379                     Re:Re:Re:Re:Re:이미지화일이 깨진상태로 저장됩니다. 부탁합니다. 답변감사합니다. 하지만 civilian,안영제 1214 2005/12/01
10381                         Re:Re:Re:Re:Re:Re:이미지화일이 깨진상태로 저장됩니다. 부탁합니다. 답변감사합니다. 하지만 이동안 1156 2005/12/01
10382                             :이미지화일이 깨진상태로 저장됩니다. 부탁합니다. 답변감사합니다. 하지만 civilian,안영제 1227 2005/12/01
10383                                 Re::이미지화일이 깨진상태로 저장됩니다. 부탁합니다. 답변감사합니다. 하지만 이동안 1320 2005/12/01
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.