使用imagecopy功能在图像内部居中图像

时间:2013-05-09 13:13:47

标签: php image function

我有一个简单的脚本,可以在图像中添加图像。这是代码:

<?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。如何根据图像的高度将图像垂直居中

谢谢

2 个答案:

答案 0 :(得分:2)

$marge_right$marge_bottom应对应源图像和目标图像之间水平和垂直尺寸的差异。

所以你需要以这种方式计算差异:

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

abs是可选的,如果您确定源小于目标的来源。

答案 1 :(得分:-1)

有一个叫做5年级数学的强大工具......

因为你有自己的身高 imagecreatetruecolor(650, 400);

以及$ sx和$ sy中放置图像的高度和宽度,归结为简单偏移计算以传递给$ marge_right和$ marge_bottom