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 的參數, 一個一個對照如下:
$newim: imagecreate($new_img_width, $new_img_height); 建立的空白圖層(顏色會跑掉)- $newim: imagecreatetruecolor($new_img_width, $new_img_height); 建立的黑色圖層
- $im: imagecreatefromjpeg($filename); 把原本的圖片讀進來
- 0: 輸出圖要從哪邊開始的 x 點(圖片輸出的點是可以指定的, 沒指定到的位置就會是你 create 的圖層顏色 或 圖)
- 0: 輸出圖要從哪邊開始的 y 點(同上)
- 7: 原始圖要從哪邊開始 x(指定要從哪個 x 點開始截取)
- 174: 原始圖要從哪邊開始 y(指定要從哪個點開始截取, 截取區塊大小由下面兩個參數去定)
- 120: 截圖要截多大 width (從上面的指定的位置, 開始截取 120px 寬)(如果要放大縮小也是由此處決定)
- 42: 截圖要截多大 height (從上面的指定的位置, 開始截取 42px 高)(如果要放大縮小也是由此處決定)
- $new_img_width: 這是新的圖, 從上面寫的第二組參數 0, 0, 要開始畫多寬(在此程式目前是指定截圖的大小)
- $new_img_height: 這是新的圖, 從上面的第二組參數 0, 0, 要開始畫多高(在此程式目前是指定截圖的大小)
再來就直接看看 Source Code 囉, 原始碼如下:
謝謝分享喲.
無法顯示錯誤的圖片,跑完後他顯示這段文字orz..
看看圖片的 Source 是不是有問題, 隨便網路在拉張 jpg 來試試看~
請問要截取圓形的區塊該怎麼處理呢 ?
先切方形後,再來裁成圓形吧~
裁成方形目前沒什麼問題, 您給的範例也是淺顯易懂,
惟目前需求為裁成圓形, 尚未尋得較易理解的解法
非常感謝您抽空回覆 !
裁圖無法裁成圓形,只能裁成方形,然後裡面在切圓形,其他周圍畫成透明底色。
有需要範例下週我在找時間寫個出來看看。
感謝您的回覆, 我也會照此方向去試看看
謝謝