2016-04-14 131 views
0

我目前正在努力加速我們開發的網站。我正在處理的部分是優化圖像,使它們儘可能小(文件大小,而不是尺寸),而不會損失質量。如何僅使用PHP壓縮尚未壓縮的圖像?

我們的客戶可以通過我們的自定義CMS將自己的圖片上傳到網站,但圖像沒有被壓縮或優化。我的上級解釋說這是因爲客戶可以上傳他們自己的圖像,並且這些圖像可以通過Photoshop或類似的工具預先優化。如果優化已經優化的圖像,質量會變差。 ...對?

我們正試圖找到一個解決方案,不需要我們安裝模塊或任何東西。我們已經使用imagejpeg(),imagepng()imagegif(),但由於之前解釋的原因,我們不使用$quality參數。我見過一些片段,但他們都使用imagejpg()之類的。

這就是說,有沒有優化圖像優化圖像沒有風險優化先前優化圖像的確定的方式?或者使用imagejpeg(),imagepng()imagegif()是否沒有問題,即使這意味着優化已優化的圖像?

謝謝!

+0

定義優化,你是什麼意思?壓縮?尺寸是多少?調色板?隔行掃描? – Tschallacka

+0

我的意思是壓縮。當我提到'優化'時,我的意思是儘可能減小文件的質量而不損失質量,因爲我們的網站依賴圖像不是像素化或模糊。我會編輯我的問題,然後看看你的答案。謝謝! – Sean

+0

將您的優化步驟添加到上傳過程中,並在圖像存儲時將其應用於所有傳入圖像。如果文件的大小已經低於您設置的標準,因爲上傳的人已經對其進行了優化,那麼再次處理該文件將不會造成影響。 –

回答

1

從你的標題去,我要承擔壓縮

因此,可以說爲800x600正常JPG格式是由您的客戶上傳。 客戶jpg是272kb,因爲它具有完整的細節和一切。

您需要爲可接受的維度設置文件大小的閾值。

像:

if $dimensions->equals(800,600) and file_type($image) =='jpg' and file_size($image) > 68kb 
then schedule_for_compression($image) 

和你建立了什麼是文件大小的上限可接受的參數的方式。如果尺寸匹配,並且文件大小較大,則不優化。

但不知道更多細節究竟是什麼理解優化,這是我能想到的唯一的事情。 「

+1

是的,我的意思是壓縮,我希望文件大小盡可能低而不會損失質量。你的方法實際上正是我的問題的答案,我從來沒有想過將文件大小與維度進行比較。我只希望我選擇正確的尺寸和文件大小,我認爲這是一個反覆試驗的過程。感謝你能這麼快回復! – Sean

+0

得到一堆混合質量,色深和尺寸的維基/隨機圖像,並將它們放入隊列中。然後在壓縮變得不可接受時增加壓縮階段。然後保存文件大小+文件類型+維度。通過快速的用戶界面,你可以快速自動製作你的標準,並把一個實習生或一些廉價勞動力,通過點擊按鈕 – Tschallacka

+0

後,你可以得到一個尺寸的圖形x文件大小並使用一些基本的數學計算它可以最大限度地包含的值來對所有可能的值進行預測 – Tschallacka

2

」如果優化已優化的圖像,質量會變差。「 如果您使用的方法沒有鬆動,則不需要。

我不知道直接在php中的方法,但如果你是在Linux服務器上,你可以使用jpeg和jpegoptim(與--strip-all)jpeg和OptiPNG或PNGOUT的png。

+0

我在印象中需要一個插件或模塊,但我認爲這是Linux服務器的本地特性? – Sean

+0

注意別人的同樣的問題:雖然我接受了@ michael-dibbets的回答,但這個回答會降低圖片的文件大小,並且應該繼續降低質量。 – Sean

0

如果您使用的圖像數量較少進行壓縮,您可能會發現外部服務,如:https://tinypng.com/developers可能有幫助。

我已經使用他們的在線工具來手動減少JPG和PNG文件的文件大小,但他們做的是提供一個免費的API服務,爲每月前500張圖片。如果作爲評論比答案更好,我很抱歉,我對於stackoverflow並不熟悉,但還沒有得到足夠的分數,但覺得這可能是一個方便的替代解決方案。

0

以相同或更高質量的設置保存JPEG不會導致質量顯着下降。只需重新保存您想要的質量設置即可。如果文件變大,只需丟棄它並保留原文。在優化之前使用jpegran或jpegoptim去除元數據,以便在與原始文件進行比較時不會影響文件大小。

除非減少顏色數量,否則PNG和GIF不會失去任何質量。只需使用Gyncoca提到的其中一個優化器即可。