2017-09-26 103 views
1

在PHP壓縮圖像,這是的方式之一:有沒有辦法將圖像壓縮到某個文件大小限制以下?

<?php 
function compress($source, $destination, $quality) { 

    $info = getimagesize($source); 

    if ($info['mime'] == 'image/jpeg') 
     $image = imagecreatefromjpeg($source); 

    elseif ($info['mime'] == 'image/gif') 
     $image = imagecreatefromgif($source); 

    elseif ($info['mime'] == 'image/png') 
     $image = imagecreatefrompng($source); 

    imagejpeg($image, $destination, $quality); 

    return $destination; 
} 

$source_img = 'source.jpg'; 
$destination_img = 'destination .jpg'; 

$d = compress($source_img, $destination_img, 90); 
?> 

REFERENCE

然而,這僅是通過指定一定的質量來壓縮。目前我正在開發圖片上傳功能。與往常一樣設置硬文件大小限制,我想壓縮大於文件大小限制的上傳圖像,以便它低於文件大小限制。有沒有一種方法可以做到這一點WITHOUT嘗試和錯誤?

+1

我不這麼認爲:) – Manav

回答

0

不,因爲沒有任何jpeg庫支持這種功能(jpeg壓縮取決於內容)。你可以給他們壓縮參數(質量,量化表),但沒有壓縮目標。

對於大多數用途而言,試驗和錯誤解決方案花費的時間太長。不過,你的目的可能不同。但是,如果沒有,並且您絕對需要壓縮特定文件大小以下的圖像,則可以嘗試重複使用來自非常相似圖像的質量參數(例如,在同一分鐘內拍攝的照片)。

附錄,因爲我不能添加評論: jpegfit會嘗試獲得完美匹配,這意味着它將在迭代完成後(默認爲16)停止,並且phpthumb將過分強烈地降低質量(默認,82,70,60,52,46,40,35,30,26,22,...)爲我的口味。

1

是的,你可以使用http://phpthumb.sourceforge.net/這個。在image processing features列表,它說

  • 質量可自動調節,以適應一定的輸出字節大小。

也有這個https://www.phpclasses.org/package/3810-PHP-Optimize-images-to-fit-in-a-given-file-size-limit.html

+0

你有我的最愛。但是內部這個工具很可能會使用嘗試和錯誤,也許有一些更復雜的方法。 – Leif

+0

可用的方法並不多,我認爲這是值得一試的。 – ProEvilz

0

而不是設置一個硬文件大小限制和往常一樣,我想壓縮上傳的圖片比文件大小限制,所以它會低於文件大小限制。有沒有一種方法可以做到這一點沒有嘗試和錯誤?

所以你不一定要壓縮文件只是下面的文件大小限制。你不想嘗試和錯誤。解決方案是將質量設置爲0.如果大小低於限制,那麼您已成功。如果它在上面,那麼沒有辦法讓文件低於這個尺寸。

相關問題