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

請問如何"直接"把 JPG 檔壓縮?

尚未結案
JackTasy
初階會員


發表:22
回覆:97
積分:28
註冊:2002-06-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-08-05 17:43:06 IP:211.76.xxx.xxx 未訂閱
我找到的寫法都是把 BMP 壓縮轉成 JPG,請問可否直接將 JPG 壓縮成更小(File Size)的同樣 JPG 檔!? 謝謝。 JackTasy
------
JackTasy
cwc65536
初階會員


發表:47
回覆:121
積分:48
註冊:2004-10-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-08-07 01:53:10 IP:203.203.xxx.xxx 未訂閱
您的問題, 邏輯上, 有點問題 ! 首先, 把 test.jpg 壓縮, 然後變成 test.jpg , 怎麼搞得清楚 ? 第二點, *.jpg 已經是有壓縮的圖檔, 在用 rar or winzip 壓縮率也不高 ! 就像 *.rar 再壓縮成 *.rar 結果會如何 ? 這就是, 為什麼沒人發表 jpg 的再壓縮, 因為, 沒有成就感
sryang
尊榮會員


發表:39
回覆:762
積分:920
註冊:2002-06-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-08-07 14:37:14 IP:221.226.xxx.xxx 未訂閱
引言: 我找到的寫法都是把 BMP 壓縮轉成 JPG,請問可否直接將 JPG 壓縮成更小(File Size)的同樣 JPG 檔!? 謝謝。
要將 JPG 檔 size 變小,只有犧牲圖像品質一途,這樣的話,這兩張圖檔就不能說是「同樣」的圖檔了 加油喔,喵~
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/
JackTasy
初階會員


發表:22
回覆:97
積分:28
註冊:2002-06-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-08-09 20:59:58 IP:211.76.xxx.xxx 未訂閱
感謝 cwc65536 和 sryang 的撥空回覆,容我說明一下。 我知道 jpg 已經是壓縮過的圖檔,若再壓縮必須犧牲圖型品質。 我現在有一個需求必須大量掃描文件並預設存成 jpg 檔,因為第一次掃描進來必須做一些影像控制及辨識所以必須最小存成一張約十幾 MB 大小的檔案。但程式辨識完後我就不需要解析度那麼高的圖檔了,僅需肉眼能辨識不太差的圖檔即可,這樣比較不會佔太大量的硬碟空間,所以這個需求對我來說是有必要的。 我試過先把 jpg 轉成 bmp,再用 bmp 轉成 jpg 藉由設定 CompressionQuality 這個屬性我可以得到壓縮後一個約 120k 的檔案,且肉眼看起來還不算差,這樣的結果差異對我來說是很重要的。 但我的問題在於轉換過程jpg->bmp->jpg會花較多時間及CPU Resource,所以才想了解看看是否可直接轉換或其他更好方法。 謝謝不吝指教。 JackTasy
------
JackTasy
sryang
尊榮會員


發表:39
回覆:762
積分:920
註冊:2002-06-27

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-08-11 23:07:08 IP:221.226.xxx.xxx 未訂閱
uses JPeg; ..... Image1.LoadFromFile('c:\a.jpg'); //Image1: TImage Jpg.Assign(Image1.Picture); //Jpg: TJpgImage Jpg.CompressionQuality := 30; //你想要的壓縮品質 Jpg.Compress; Jpg.SaveToFile('c:\b.jpg'); 這樣就好了 只要 uses JPeg,TImage 就支援 jpg 檔,可以直接 load 進來 加油喔,喵~
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/
JackTasy
初階會員


發表:22
回覆:97
積分:28
註冊:2002-06-06

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-08-12 10:09:04 IP:61.63.xxx.xxx 未訂閱
謝謝 sryang 的指導,不過我試了ㄧ下有一點小問題喔。 若照如下的Code轉出的檔案FileSize=0,是個失敗的檔案沒有影像。 拿掉 Jpg.Compress; 這ㄧ行雖然就可以產生有影像的檔案但卻沒有壓縮效果了。    
uses jpeg;
procedure TForm1.Button1Click(Sender: TObject);
var
  Jpg: TJpegImage;
begin
  Jpg := TJpegImage.Create;
  try
      Image1.Picture.LoadFromFile('c:\tmp2\1.jpg'); //Image1: TImage
      Jpg.Assign(Image1.Picture); //Jpg: TJpgImage
      Jpg.CompressionQuality := 30; //你想要的壓縮品質
      Jpg.Compress;  //<-*
      Jpg.SaveToFile('c:\tmp2\1a.jpg');
  finally
      Jpg.Free;
  end;
end;
JackTasy
------
JackTasy
sryang
尊榮會員


發表:39
回覆:762
積分:920
註冊:2002-06-27

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-08-12 17:33:23 IP:210.243.xxx.xxx 未訂閱
抱歉,寫錯了,應該是這樣: Jpg.LoadFromFile('c:\a.jpg'); Image1.Picture.Bitmap.Assign(Jpg); //Image1: TImage Jpg.Assign(Image1.Picture.Bitmap); //Jpg: TJpgImage Jpg.CompressionQuality := 30; //你想要的壓縮品質 Jpg.Compress; Jpg.SaveToFile('c:\b.jpg'); 還是要先用 TJpgImage 先 load 進圖檔,丟給 TImage 轉成 bitmap ,然後再丟回給 TJpgImage 之後再壓縮,存檔。 可是這樣的方法你已經再使用了,對不起,造成你的困擾。 加油喔,喵~
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/
JackTasy
初階會員


發表:22
回覆:97
積分:28
註冊:2002-06-06

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-08-16 20:43:53 IP:211.76.xxx.xxx 未訂閱
可能沒有別的方法了吧,就先結案吧,感謝 sryang 的回覆。 JackTasy
------
JackTasy
bugmans
高階會員


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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2007-03-31 09:14:16 IP:125.225.xxx.xxx 未訂閱
http://www.stuffit.com/win/deluxe/
Compress JPEG Photos and Images
With its revolutionary new Image compression technology, StuffIt archives what no other
compression product has been able to do – reduce the size of JPEG photos and images
no loss in image quality!
宣稱可以再減少30%的大小,而且是無損壓縮

http://www.stuffit.com/imagecompression/wp_stuffit_imgcomp.pdf
其中的原理介紹
系統時間:2024-03-29 2:01:42
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!