为了账号安全,请及时绑定邮箱和手机立即绑定

php gd 如何裁圖水平垂直置中?

php gd 如何裁圖水平垂直置中?

PHP
明月笑刀无情 2019-03-13 22:16:19
有一個畫布大小是 $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的那块。

查看完整回答
反对 回复 2019-03-18
  • 1 回答
  • 0 关注
  • 339 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信