PHP 要截圖片的某個區塊(截圖)

PHP 的縮圖/放大這種寫很多, 但是似乎截圖沒什麼範例可以參考, 還蠻簡單的, 跟縮圖差不多, 只是參數上有些不同而已~ 🙂

先舉個例子, 如 書摘: 狡兔總比慢龜好 這篇文章中的那張圖片(請自行到此文章去看), 我如果只想把 "狡兔三窟" 的那個黃色區塊截取出來, 下述的範例, 只要把圖下來, 直接執行就會看到那個區塊的圖了~

檔案內大概該有的註解都寫好了(Source code 放在此篇最下面), 解釋一下主要參數即可:

  • imagecopyresampled($newim, $im, 0, 0, 7, 174, 120, 42, $new_img_width, $new_img_height); // 原始尺寸 120 x 42
  • imagecopyresampled($newim, $im, 0, 0, 100, 30, 500, 500, $new_img_width, $new_img_height); // 圖截出來後放到 500 x 500
  • imagecopyresampled($newim, $im, 0, 0, 100, 30, 10, 10, $new_img_width, $new_img_height); // 圖截出來後縮小到 10 x 10

大概主要是這個 function 的操作而已, 主要只看第一個原尺寸的那個參數對照就好了.(下述是 imagecopyresampled 的參數, 一個一個對照如下:

  1. $newim: imagecreate($new_img_width, $new_img_height); 建立的空白圖層 (顏色會跑掉)
  2. $newim: imagecreatetruecolor($new_img_width, $new_img_height); 建立的黑色圖層
  3. $im: imagecreatefromjpeg($filename); 把原本的圖片讀進來
  4. 0: 輸出圖要從哪邊開始的 x 點(圖片輸出的點是可以指定的, 沒指定到的位置就會是你 create 的圖層顏色 或 圖)
  5. 0: 輸出圖要從哪邊開始的 y 點(同上)
  6. 7: 原始圖要從哪邊開始 x(指定要從哪個 x 點開始截取)
  7. 174: 原始圖要從哪邊開始 y(指定要從哪個點開始截取, 截取區塊大小由下面兩個參數去定)
  8. 120: 截圖要截多大 width (從上面的指定的位置, 開始截取 120px 寬)(如果要放大縮小也是由此處決定)
  9. 42: 截圖要截多大 height (從上面的指定的位置, 開始截取 42px 高)(如果要放大縮小也是由此處決定)
  10. $new_img_width: 這是新的圖, 從上面寫的第二組參數 0, 0, 要開始畫多寬(在此程式目前是指定截圖的大小)
  11. $new_img_height: 這是新的圖, 從上面的第二組參數 0, 0, 要開始畫多高(在此程式目前是指定截圖的大小)

再來就直接看看 Source Code 囉, 原始碼如下:

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

在〈PHP 要截圖片的某個區塊(截圖)〉中有 10 則留言

    1. 裁成方形目前沒什麼問題, 您給的範例也是淺顯易懂,
      惟目前需求為裁成圓形, 尚未尋得較易理解的解法
      非常感謝您抽空回覆 !

    2. 裁圖無法裁成圓形,只能裁成方形,然後裡面在切圓形,其他周圍畫成透明底色。

      有需要範例下週我在找時間寫個出來看看。

Morgan 發表迴響取消回覆

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料