請教一個用TJPEGImage的問題 |
答題得分者是:taishyang
|
wscski
一般會員 發表:19 回覆:38 積分:11 註冊:2002-04-15 發送簡訊給我 |
我用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 發送簡訊給我 |
|
wscski
一般會員 發表:19 回覆:38 積分:11 註冊:2002-04-15 發送簡訊給我 |
程式如下:
-------------------------------------
void __fastcall TMainForm::Button5Click(TObject *Sender)
{
TJPEGImage *Jpg = new TJPEGImage();
int N=FileListBox1->Items->Count;
for(int j=0;j
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
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 發送簡訊給我 |
謝謝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 發送簡訊給我 |
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 發送簡訊給我 |
|
wscski
一般會員 發表:19 回覆:38 積分:11 註冊:2002-04-15 發送簡訊給我 |
再次感謝兩位大大的指導喔!
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 發送簡訊給我 |
wscski您好:
您提供的連結有錯誤耶,您可以將檔案上傳至
http://delphi.ktop.com.tw/forum.asp?FORUM_ID=97
[會員求助程式檔案上傳區] 順心 <>~我也是在學習的階段,所以請您多多見諒與指教~>
|
wscski
一般會員 發表:19 回覆:38 積分:11 註冊:2002-04-15 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
yannyann
一般會員 發表:8 回覆:20 積分:10 註冊:2003-02-17 發送簡訊給我 |
我也是會出現錯誤,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 發送簡訊給我 |
|
yannyann
一般會員 發表:8 回覆:20 積分:10 註冊:2003-02-17 發送簡訊給我 |
|
wscski
一般會員 發表:19 回覆:38 積分:11 註冊:2002-04-15 發送簡訊給我 |
引言: 經過我嘗試..我想問題真的出在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 發送簡訊給我 |
我在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找不到,有沒有知道這是什麼
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |