TQRDBImage無法印JPEG型態的資料嗎? |
答題得分者是:sos_admin
|
star
初階會員 發表:37 回覆:93 積分:36 註冊:2002-07-18 發送簡訊給我 |
Hi:
MSSQL 2000 ADO Delphi 7 (QuickRep)
請問TQRDBImage元件是否只能讀取BMP型態資料?
因為出現了'Bitmap image is not valid'訊息.
但實際上資料庫中(IMAGE欄位)存的是JPEG型態的圖形(圖檔不會超過100K).
該如果解決呢?
是否在client端讀取資料後先存到Stream(或ClipBoard...)
再改由TQRImage元件顯示?
或有其他方法嗎, 可否提供給我參考? 謝謝! 發表人 - star 於 2003/08/19 16:25:18
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
star
初階會員 發表:37 回覆:93 積分:36 註冊:2002-07-18 發送簡訊給我 |
引言: 參考這篇: http://www.delphiboy.com/cgi-bin/wangyoulaigao/datacontent.php?no=164 這篇要將jpg轉成bmp存入資料庫,好像較不符我的須求, 我是在印表時用TQRDBImage元件才出現問題?? 在螢幕顯示時沒問題(因為我用的是IWDBImage) 或使用 danny 大大的元件: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=19322 因為商業用途的關係, 不好用無source code(或無版權)的外加元件我按前人提過的方法測試, 但有error, 請各位前輩指正: var Stream1 : TBlobStream; jpeg:TJPEGImage; begin Steam1 := TBlobStream.Create(ADOQuery1GRAPHIC, bmread); try jpeg.LoadFromStream(Stream1); QRImage1.Picture.Assign(jpeg); finally jpg.Free; Stream1.Free; end; end; 在Create Stream時會出現: Invalid class typecast. 題外話: 事實上, 發問問題前, 我大部份會先Search之前的問題, 是否有可參考的資料. 除非我老花眼,不小心漏掉了, 或找不到我想要的答案, 或測不出來, 只好重新整理我的問題再發問. 希望不會浪費各位的時間才好... > |
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
star
初階會員 發表:37 回覆:93 積分:36 註冊:2002-07-18 發送簡訊給我 |
|
sos_admin
版主 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
如下:(DBImage1: TQRImage;) procedure Tprint_frm.QuickRep1StartPage(Sender: TCustomQuickRep);
var
Stream:TMemoryStream;
jpgstream: TJpegImage ;
begin Stream:=TMemoryStream.Create ;
jpgstream:= TJPEGImage.Create;
TBlobField(Form1.AdoQuery2.FieldByName('tupian') as TBlobField).SaveToStream(Stream);
Stream.Position := 0;
jpgstream.LoadFromStream(Stream);
DBImage1.Picture.Assign(jpgstream);
Stream.Free;
jpgstream.free; end; 您可以用上面的方法试验一下,我就是这样做的可以成功!
|
star
初階會員 發表:37 回覆:93 積分:36 註冊:2002-07-18 發送簡訊給我 |
引言: 如下:(DBImage1: TQRImage;) procedure Tprint_frm.QuickRep1StartPage(Sender: TCustomQuickRep); var Stream:TMemoryStream; jpgstream: TJpegImage ; begin Stream:=TMemoryStream.Create ; jpgstream:= TJPEGImage.Create; TBlobField(Form1.AdoQuery2.FieldByName('tupian') as TBlobField).SaveToStream(Stream); Stream.Position := 0; jpgstream.LoadFromStream(Stream); DBImage1.Picture.Assign(jpgstream); Stream.Free; jpgstream.free; end; 您可以用上面的方法试验一下,我就是这样做的可以成功!您的方法我之前試過了... 這樣是沒有錯誤出現, 但是QRDBImage1卻是空白的, 不知那裡錯了? 還有為何是寫在OnStarPage中? 而不是寫在DetailBand.BefortPrint呢? |
star
初階會員 發表:37 回覆:93 積分:36 註冊:2002-07-18 發送簡訊給我 |
|
Winifred
初階會員 發表:3 回覆:34 積分:47 註冊:2002-07-24 發送簡訊給我 |
|
hahalin
版主 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
唷唷唷 透過這題討論小弟也跟著學到好多唷... 感謝大家的共襄盛舉 There is a raising fire in my heart tonight,growing higher and higher in my soul
I want to ride on the silver dove far into the night,till I make you take me on your mighty wing,take me on your mighty wing to cross the sky
|
sos_admin
版主 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |