當我們用Lavarel架網站,或處理有圖片上傳欄位的網頁應用程式,在儲存從iOS相簿或相機上傳的圖片時,可能多少會遇到一些狀況。本文將簡單介紹一些減少上傳圖片時的意外狀況,確保圖檔妥善保存的技巧。
檢查檔案大小
PHP預設的上傳檔案尺寸上限是2M,這對大部分手機拍攝的影像而言都太小了。尤其像是iPhone配備了高畫質相機,就算有不錯的壓縮功能,檔案大小常常還是會超出這個限制。
可以透過編輯以下這幾行php.ini的程式碼,來把檔案大小限制增加到5M到10M:
post_max_size = 10M
upload_max_filesize = 8M
確認有安裝LIBJPEG
如果Lavarel跳出錯誤訊息Unable to init from given binary data (尤其是有用Intervention的時候),代表你的伺服器沒有安裝libjpeg圖像庫。libjpeg是用來控制jpeg圖檔的函式庫。
用以下指令在Ubuntu伺服器安裝libjpeg:
sudo apt-get install libjpeg-dev
利用INTERVENTION IMAGE擴充套件處理IOS圖片
如果已經順利上傳iOS圖檔,卻發現上傳後的圖片被旋轉了,或方向不對,那麼建議使用Intervention來處理上傳後的圖片。
Intervention是一個PHP影像處理庫,跟Laravel可以結合得很好,而且介面操作簡易。
可以從Intervention的github頁面更深入了解這個擴充套件:
https://github.com/Intervention/image
用composer把Intervention安裝到專案:
php composer require intervention/image
在class裡使用Intervention Image:
<?php
use Intervention\Image\Facades\Image;
處理上傳的圖檔、修正方向:
$image = Image::make($file->path());
$image->orientate();
$img->save($path);
這個函式庫也可以輕鬆處理其他事項,例如調整大小、旋轉、擷取等。
如果你在網頁影像處理或控制的部分卡關,而這篇貼文有幫助到你,或是你有興趣跟BDigital合作,歡迎聯絡我們。