全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2631
推到 Plurk!
推到 Facebook!

請教一個用TJPEGImage的問題

答題得分者是:taishyang
wscski
一般會員


發表:19
回覆:38
積分:11
註冊:2002-04-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-06-18 09:11:33 IP:140.96.xxx.xxx 未訂閱
我用TJPEGImage來將BMP檔轉成JPG檔,但是遇到一個問題。 Image1->Picture->Bitmap->LoadFromFile("...."); Jpg->Assign(Image1->Picture->Bitmap); Jpg->CompressionQuality = 90; Jpg->SaveToFile("....."); 有時候在存檔時(Jpg->SaveToFile)會發生錯誤「JPEG error #36」 可是原BMP檔沒問題,我用ACDSEE等軟體開啟,存成JPG也沒問題。 不過發生機率很低,大概幾百分之一吧! 我嘗試把Jpg->CompressionQuality 設小一點,比如70就OK。 有些檔要設更小60,才OK。 可是用PHOTOIMPACT轉設90也OK,所以我才納悶。 有誰知道啥原因嗎? 謝謝大家!
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-06-18 10:23:31 IP:140.135.xxx.xxx 未訂閱
wscski您好:   能否將完整的程式碼貼上來,讓大家幫您看看..< > 看起來是沒有什麼問題 順心< > ~我也是在學習的階段,所以請您多多見諒與指教~
wscski
一般會員


發表:19
回覆:38
積分:11
註冊:2002-04-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-06-18 11:22:24 IP:140.96.xxx.xxx 未訂閱
程式如下: ------------------------------------- void __fastcall TMainForm::Button5Click(TObject *Sender) {      TJPEGImage *Jpg = new TJPEGImage(); int N=FileListBox1->Items->Count; for(int j=0;jDirectory "\\" FileListBox1->Items->Strings[j]; AnsiString ImageFile2 = ImageFile1.SubString(1,ImageFile1.Length()-4) ".jpg"; Image1->Picture->Bitmap->LoadFromFile(ImageFile1); Application->ProcessMessages(); Jpg->Assign(Image1->Picture->Bitmap); Jpg->CompressionQuality = 70; Jpg->SaveToFile(ImageFile2); Image1->Picture->Bitmap->FreeImage(); } delete Jpg; } 奇怪,那個for()裡面的程式碼會顯示不全 ------------------------------------- 沒啥特別,用一個FileListBox1列出我要的BMP檔,再用回圈去轉檔。 程式應該沒問題,我有一個資料夾幾千張BMP檔也順利跑完。 就是其中一個資料夾其中幾張出問題,我想如果是檔案的問題, 用PHOTOIMPACT轉也應該會出問題才對。 怪的是把CompressionQuality設小一點就好了,可以我需要大一點的CompressionQuality,怕影像品質不佳。 而且我換不同電腦執行也一樣。 發表人 - wscski 於 2003/06/18 11:36:37
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-06-18 12:38:50 IP:140.135.xxx.xxx 未訂閱
wscski您好:   試試將   Image1->Picture->Bitmap->LoadFromFile(ImageFile1);   Jpg->SaveToFile(ImageFile2);   改成
 
  Image1->Picture->Bitmap->LoadFromFile(ImageFile1.c_str());
  Jpg->SaveToFile(ImageFile2.c_str());
P.S:要讓程式碼方便其他人閱讀時,可用[插入Code]的方式將程式碼包起來 在發問中有個[#]的圖示,將程式碼放在裡面即可 順心 <>~我也是在學習的階段,所以請您多多見諒與指教~ 發表人 -
wscski
一般會員


發表:19
回覆:38
積分:11
註冊:2002-04-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-06-18 13:25:08 IP:140.96.xxx.xxx 未訂閱
謝謝taishyang大大 我試一下還是一樣說 LoadFromFile()裡面參數我查HELP是AnsiString耶! 我想應該真的是我那幾個檔案有問題吧! 我把Jpg->CompressionQuality拿掉(不知預設是多少) 或者設小一點就可以了 設高一點80以上就會有問題    
引言: wscski您好: 試試將 Image1->Picture->Bitmap->LoadFromFile(ImageFile1); Jpg->SaveToFile(ImageFile2); 改成
 
  Image1->Picture->Bitmap->LoadFromFile(ImageFile1.c_str());
  Jpg->SaveToFile(ImageFile2.c_str());
P.S:要讓程式碼方便其他人閱讀時,可用[插入Code]的方式將程式碼包起來 在發問中有個[#]的圖示,將程式碼放在裡面即可 順心 <>~我也是在學習的階段,所以請您多多見諒與指教~ 發表人 - >< face="Verdana, Arial, Helvetica">
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-06-18 14:36:20 IP:140.135.xxx.xxx 未訂閱
wscski您好:   可是壓縮的品質預設是90..   我用下面的方式做測試    
 
 TJPEGImage*jpg =new TJPEGImage();
 int a=jpg->CompressionQuality;
 ShowMessage(a);
 delete jpg;
   
這樣就與您的假設有出入了,而也我也沒有出現過您所說的情況 我的環境是BCB5.0 WINXP< > 順心< > ~我也是在學習的階段,所以請您多多見諒與指教~ 發表人 - taishyang 於 2003/06/18 15:46:29
yannyann
一般會員


發表:8
回覆:20
積分:10
註冊:2003-02-17

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-06-18 15:43:50 IP:163.28.xxx.xxx 未訂閱
wscski 你好: JPEG error #36是 36 cstrJERR_FILE_WRITE 'Output file write error -- out of disk space?' 或許你硬碟空間滿了? 另外我使用TJPEG時後 Height ,Width PixelFormat都會設定 在SaveToFile之前會呼叫Compress() 使用上並沒有問題,你可以再試試看 :)
wscski
一般會員


發表:19
回覆:38
積分:11
註冊:2002-04-15

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-06-18 16:15:59 IP:140.96.xxx.xxx 未訂閱
再次感謝兩位大大的指導喔! SORRY!我大概是沒說清楚,我所說的狀況不一定會發生,我轉了幾萬個BMP檔,大概有幾十個發生這這種情況。 CompressionQuality有的要設90以下、有個要設80以下才可以,但是大部分都是設90以上就有問題了。 本來以為是硬碟不夠,但是CHECK之後確定空間夠。 本來以為那部電腦不穩,但是重開機,只轉那個有問題的檔,還是一樣。換電腦還是一樣。 所以我想大概真的是那些檔本身的問題,但是用PHOTOIMPACT轉,品質設成95也OK。所以我想不透囉!那些檔故意找我碴吧!哈哈! 我隨便附上一個BMP檔,有興趣的人可以試試喔! http://webhd.yam.com/wscski/1957.zip 這個檔用程式,Jpg->CompressionQuality = 95,就會出問題喔! 好像要90或90以下才OK!
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-06-18 16:27:32 IP:140.135.xxx.xxx 未訂閱
wscski您好:   您提供的連結有錯誤耶,您可以將檔案上傳至   http://delphi.ktop.com.tw/forum.asp?FORUM_ID=97 [會員求助程式檔案上傳區] 順心 <>~我也是在學習的階段,所以請您多多見諒與指教~
wscski
一般會員


發表:19
回覆:38
積分:11
註冊:2002-04-15

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-06-18 16:54:19 IP:140.96.xxx.xxx 未訂閱
謝謝版主喔! 我傳好了! http://delphi.ktop.com.tw/topic.php?TOPIC_ID=32580
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-06-18 17:10:10 IP:140.135.xxx.xxx 未訂閱
wscski您好:    我也發生像您一樣的情況 壓縮率設定在 > 真是怪異< > 不曉得其他人也是一樣的情況嗎??? 順心< > <>~我也是在學習的階段,所以請您多多見諒與指教~
yannyann
一般會員


發表:8
回覆:20
積分:10
註冊:2003-02-17

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-06-18 17:20:20 IP:140.113.xxx.xxx 未訂閱
我也是會出現錯誤,quailty 90 ok, 超過90就會出現error # 36
pJPEG->Assign(pBitmap);
pJPEG->PixelFormat=jf24Bit;
pJPEG->CompressionQuality=ScrollBar1->Position;
pJPEG->Compress();
if (!SaveDialog1->Execute()) return;
pJPEG->SaveToFile(SaveDialog1->FileName);
設定中斷點於pJPEG->Compress();後發現 錯誤就是發生在pJPEG->Compress(); 另外,我發現一個值得注意的現象.. 剛剛好不會有問題的quality 90,其檔案大小剛好98xKB, quality 91應該就會超過1MB ,或許error #36 所指空間不足是指這個!? 存屬猜測 :P 發表人 - yannyann 於 2003/06/18 17:29:08
wscski
一般會員


發表:19
回覆:38
積分:11
註冊:2002-04-15

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-06-18 19:23:42 IP:61.62.xxx.xxx 未訂閱
taishyang版主: 我的情況跟你有點不一樣喔!我是90-98都不可以喔! 98或90以下才可以。 是不是很詭異勒? 而且喔!我還有幾個檔,情況也不一樣,有的一定要80以下,有的一定要90以下。 我用小畫家開那個檔,全選複製,貼成新檔,一樣存成BMP檔。 結果還是一樣。 而且設99檔案更大,也可以,所以不是硬碟空間的問題吧! 硬碟還有好幾G勒! 我想那幾個檔案裡頭一定存在著怪資料吧! 暫且打住,我一旦有新發現在告訴大家! 謝謝!
yannyann
一般會員


發表:8
回覆:20
積分:10
註冊:2003-02-17

發送簡訊給我
#14 引用回覆 回覆 發表時間:2003-06-19 02:46:44 IP:140.113.xxx.xxx 未訂閱
經過我嘗試..我想問題真的出在1MB 上限問題... 或許BCB內提供的TJPEGImage有問題吧.. 不管是quailty設定為多少,只要當壓縮後的Image size超過1MB 就會出現#36錯誤... 所以不是圖檔藏有什麼怪資料,而是TJPEGImage元件的問題..
wscski
一般會員


發表:19
回覆:38
積分:11
註冊:2002-04-15

發送簡訊給我
#15 引用回覆 回覆 發表時間:2003-06-20 01:57:24 IP:61.62.xxx.xxx 未訂閱
引言: 經過我嘗試..我想問題真的出在1MB 上限問題... 或許BCB內提供的TJPEGImage有問題吧.. 不管是quailty設定為多少,只要當壓縮後的Image size超過1MB 就會出現#36錯誤... 所以不是圖檔藏有什麼怪資料,而是TJPEGImage元件的問題..
yannyann你好: 口素,設99超過1MB更多也沒問題溜! 而且因為我故意挑一個比較小的BMP檔上傳給大大們測, 我其他轉了幾千張沒問題的BMP檔,都是5MB以上,甚至有的20幾MB, 而因為quility設比較大,所以轉出來的JPG檔幾乎都超過1MB以上耶! 既然用ACDSEE、PHOTOIMPACT轉沒問題,那就只能先判斷是TJPEGImage元件的問題囉!
bugmans
高階會員


發表:95
回覆:322
積分:188
註冊:2003-04-12

發送簡訊給我
#16 引用回覆 回覆 發表時間:2003-06-22 08:58:23 IP:163.23.xxx.xxx 未訂閱
我在google查相關討論也沒有明確的解答 http://groups.google.com.tw/groups?hl=zh-TW&inlang=zh-TW&lr=&ie=Big5&q=CompressionQuality TJPEGImage 36 但其中一篇"JPEG error #36" http://groups.google.com.tw/groups?hl=zh-TW&lr=&ie=UTF-8&inlang=zh-TW&th=fa7cc18c5699b2df&rnum=2 其中提到The problem occurs in code suggested in Borland's TI 3332, so many people might be using that. 我嘗試著去找TI 3332找不到,有沒有知道這是什麼
系統時間:2024-05-06 0:52:58
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!