有一個畫布大小是 $plat 600x300
我有先將一張圖片丟入這個畫布的右側 300x300
右側
imagecopyresampled($plat, $xxx, 300, 0, 0, 0, 300, 300, 300, 300);
之後要將使用者圖片丟到左側的 300x300
左側
imagecopyresampled($plat, $src, 0, 0, 0, 0, 300, 300, $new_w, $new_h);
兩個合起來就會是一張 600x300的圖這沒有問題
問題是~如何處理使用者的圖片?我要取得用戶上傳的圖的水平垂直置中 300x300的位置然後再丟到 plat 畫布中
$src_w = imagesx($src);
$src_h = imagesy($src);
if( $src_w > $src_h){
$new_w = $src_h;
$new_h = $src_h;
}else{
$new_w = $src_w;
$new_h = $src_w;
}
以上的做法會稍微的水平垂直置中,但還是會有誤差
但是我怎麼找都沒有相關的資源或做法也有可能是我找錯~想問問有沒有人有解?
補充我開了兩個空畫布
抓本身寬跟高
我發現這樣做後,我的畫布會是空白的
我以為我放錯地方
但圖片會變這樣
更新
imagecopyresampled($plat300, $src, 0, 0, 0, 0, 300, 300, $src_w, $src_h);
我原始的圖片是
1 回答

狐的傳說
TA貢獻1804條經驗 獲得超3個贊
謝邀,為什么不考慮下把用戶的完整圖片縮小至300300,放到你要合成的圖片的左側呢?如果真的只要圖片居中300300的那部分,也很簡單。假設用戶上傳的圖的長、寬分別是w,h,你在使用imagecopyresampled函數把用戶圖片放到你要合成的圖上的時候,原圖的坐標x,y分別是用(w-300)/2,(h-300)/2即可得到用戶上傳圖片的置中300*300的那塊。
- 1 回答
- 0 關注
- 367 瀏覽
添加回答
舉報
0/150
提交
取消