簡體   English   中英

使用imagejpeg使圖像文件變小

[英]Using imagejpeg to make image files unnoticeable smaller

我正在用php創建圖像共享網站。 我在讀有關Google的Pagespeed的文章,他們說我需要優化我的圖像,所以我一直在嘗試使用imagejpeg來做到這一點,然后希望我能夠在png和gif中使用基本相同的代碼。

這是我目前的代碼:

$img = imagecreatefromjpeg($original);

if ($extension === "jpg" || $extension === "jpeg"){
    $location = $_SERVER['DOCUMENT_ROOT'] . "/uploads/" . $id . "/fullsize." . $extension;
    $temp = fopen($location, 'w');
    imagejpeg($img, $location, 80);
    fclose($temp);
}

它的工作是以$ original拍攝圖像,並將通過imagejpeg保存的副本保存到$ location。

但是有時生成的文件比原始文件大! 這就是我感到難過的地方。

為什么會這樣呢?

我怎樣才能使它停止發生?

我正在嘗試減小圖像文件的大小而又不損害其外觀,有沒有比這更好的方法了?

謝謝,

利亞姆

如果您將文件保存為比使用以下文件生成的原始文件質量低的質量設置,則imagejpeg僅會收縮文件

例如

imagejpeg($gd, 'temp.jpg', 50);
$temp = imagecreatefromjpeg('temp.jpg');
imagejpeg($gd, 'temp2.jpg', 70);

可能會生成一個更大的temp2文件,因為它的質量設置較高,這大概會轉化為“壓縮程度不高”。

如果沒有實際完成整個jpeg壓縮過程,就無法預測給定圖像和質量設置的最終輸出大小。 您可能需要對圖像進行幾次嘗試性的重新壓縮,並每次都降低質量設置,直到開始出現收縮。

當然,如果您將質量降低得太低,則基本上會破壞圖像,並肯定會引入可見的偽像。

這絕對取決於原始圖像的質量。 如果原始圖像的質量為60,則保存為質量80通常會導致文件較大。

但是,這還取決於創建原始圖像的軟件。 例如,我觀察到很多次Adobe Photoshop可以保存質量為60的圖像,而該圖像看起來可以比GD(您使用的圖形庫)中的80好。 此外,Photoshop經常可以以與其他圖形包相同的質量保存圖像,但是尺寸較小。 當然,這是主觀的。 我不一定要得出結論,Photoshop是“更好的”,但是它似乎確實調整了選項。

我建議您嘗試ImageMagick,因為我發現它通常比GD做得更好(文件大小,圖像質量)。 您還應該確定每張圖像的原始質量設置,以免意外增大圖像。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM