$width_size = 1000;
list($width, $height, $type_no) = getimagesize($imgSource);
    if ($width > $width_size) {
      $ratio = $width / $height;
      if ($ratio > 1) {
        $newWidth = $width_size;
        $newHeight = $width_size / $ratio;
      } else {
        $newWidth = $width_size * $ratio;
        $newHeight = $width_size;
      }
    } else {
      $newWidth = $width;
      $newHeight = $height;
    }
是依照以上的方式比例縮小
發現假設 2000 寬的照片縮小成 1000 卻會模糊?!
尤其是 jpg 檔
header('Content-Type:image/jpeg');
        $imageWp = imagecreatetruecolor($newWidth, $newHeight);
        $image = imagecreatefromjpeg($imgSource);
        imagecopyresampled($imageWp, $image, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
        imagejpeg($imageWp, $imgReader, 100);
        imagedestroy($imageWp);
品質已經調整100了
有經驗的大大是如何解決
或是有更好的方式?
如果允許安裝其他的 extension 的話
可以參考:PHP: imageMagick
然後了解一下縮放圖片的演算法
不同的演算法對縮圖的品質會有不同的影響
(以縮圖來說一般會用 Lanczos)
真的深入研究也許還要考慮銳化,不過先用 Lanczos 試試看吧?
PS. 剛剛找到一個 demo+範例程式碼 的網頁。
補充:如果圖片是客戶端上傳的話,是不是也能考慮直接在前端縮圖呢?看是用 canvas 或是用外部的函式庫。
不要用gd。gd處理出來的圖一定不會比原來的好。
如果真有這樣的要求。一般就兩個做法。
1.不做gd縮圖,直托從css中處理。當然這樣會有容量下載的問題存在。載入頁面會慢點。
2.用另外比gd好的圖片處理元件。映像中有image啥的可以用。但要在主機先安裝好元件才行,預設沒安裝這東西。