2013-05-09 135 views
1

我有一個簡單的腳本,在圖像內添加圖像。這裏是代碼:使用圖像複製功能的圖像中心圖像

<?php 

$im = imagecreatetruecolor(650, 400); 
$stamp = imagecreatefrompng('test.png'); 

$red = imagecolorallocate($im, 209, 231, 244); 
imagefill($im, 0, 0, $red); 

$marge_right = 10; 
$marge_bottom = 133; 
$sx = imagesx($stamp); 
$sy = imagesy($stamp); 

imagecopy($im, $stamp, imagesx($im) - $sx - $marge_right, imagesy($im) 
- $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp)); 

header('Content-type: image/png'); 
imagepng($im); 
imagedestroy($im); 

?> 

現在這將放大測試圖像從大圖像右側10x和從圖像底部133px。如何根據其高度垂直居中放置圖像?

感謝

回答

1

$marge_right$marge_bottom應該對應於differenc (分別)源圖像和目標圖像之間的水平和垂直尺寸。

所以,你需要計算的區別是這樣的:

$marge_right = abs($dest_sx-$src_sx); 
$marge_bottom = abs($dest_sy-$src_sy); 

abs是可選的,如果你確信源是大源是比目標更小。

+0

問題是我無法理解'imagesx($ im) - $ sx - $ marge_right'部分,因爲我從另一個線程獲得了函數。爲了集中東西,我們得到更大的減去更小的和除以2,所以不能理解如何在圖像gd中做到這一點,因爲它是php – 2013-05-09 13:50:33

+0

'imagesx($ im) - $ sx - $ marge_right'中最令人困惑的函數之一假設你知道右邊的邊距,並想從左邊獲得邊距(這是GD使用的:'(0,0)'是左上角)。但現在,你不需要這樣,所以你可以計算左邊距並直接使用它。另外請注意,居中時,'$ margin_right == $ margin_left'。 – jadkik94 2013-05-09 14:01:51

+0

非常感謝JAD :)我對現在的工作方式有了更好的理解......還有0,0不清楚它是從左上角還是左下角我用來繪製圖表 – 2013-05-09 16:46:17

0

存在着強大的工具,叫做五年級的數學......

既然你有你的身高在 imagecreatetruecolor(650, 400);

給出在$ SX您放置圖像的高度和寬度和$ SY將此歸結爲簡單的偏移計算傳遞到$ marge_right和$ marge_bottom

+5

還有一種叫做尊重的工具。 – jadkik94 2013-05-09 13:41:35

+1

並祝賀你明顯地解決某人的家庭作業+1 + 1 – worenga 2013-05-09 13:49:46

+0

絕對在你身邊,mightyuhu。我的+1,這類問題被敘述了數百萬次,所以......如果有人在談論尊重,請尊重這裏的社區,在嘗試單獨解決它之前不要問你想到的是什麼/尋找答案。 – 2014-06-03 11:59:03