我有一個網站,用戶可以上傳圖片。我直接處理這些圖像,並使用CodeIgniter圖像處理類將它們重新調整爲5種附加格式。我這樣做是非常有效如下:如何在CodeIgniter中壓縮圖像,但不改變它們的尺寸?
- 我總是從以前的格式調整,而不是從原來的
- 我調整使用的90%的圖像質量,其中約一半的JPEG文件的文件大小
上述的方式做事情後,我實施了建議後,我從另一個問題得到我問。我的測試用例是RGB模式下的1.6MB JPEG格式,分辨率高達3872 x 2592.對於這種圖像,這是一種臨界情況,調整大小過程總共花費約2秒,這對我來說是可以接受的。
現在,只剩下一個挑戰了。我希望使用90%的質量壓縮原始文件,但不調整其大小。這個想法是,該文件也將採取一半的文件大小。我想我可以簡單地將其調整爲目前的尺寸,但對文件或其大小沒有任何影響。這是我的代碼,有點簡化:
$sourceimage = "test.jpg";
$resize_settings['image_library'] = 'gd2';
$resize_settings['source_image'] = $sourceimage;
$resize_settings['maintain_ratio'] = false;
$resize_settings['quality'] = '90%';
$this->load->library('image_lib', $resize_settings);
$resize_settings['width'] = $imagefile['width'];
$resize_settings['height'] = $imagefile['height'];
$resize_settings['new_image'] = $filename;
$this->image_lib->initialize($resize_settings);
$this->image_lib->resize();
上述代碼適用於除原始格式以外的所有格式。我嘗試調試到CI類,看看爲什麼沒有發生,我注意到腳本檢測到維度沒有改變。接下來,它只是製作該文件的副本而不進行處理。我評論了一段代碼來強制它調整大小,但現在仍然沒有任何反應。
有沒有人知道如何在不改變尺寸的情況下使用CI類壓縮圖像(任何圖像,而不僅僅是jpegs)到90%?
謝謝你的回覆。那麼,那實際上是我已經在做的。$ imagefile數組保存了我用來配置resize類的原始寬度和高度。 – Ferdy 2010-01-01 22:56:06
哦,對不起。直到最後,我沒有看到你的問題。幾分鐘後檢查我的編輯。 – 2010-01-01 22:58:56
沒問題,謝謝你再次幫忙。好的,我做了一些測試。 GD2不支持旋轉,至少這是CI給出的錯誤。我可以通過切換到imagemagick進行旋轉,但這會增加文件大小而不是減小文件大小。我可以看到你的代碼如何易於使用,並且我沒有問題,因此我需要一些適用於GIF和PNG的東西。 – Ferdy 2010-01-01 23:42:18