【发布时间】:2013-03-13 08:59:36
【问题描述】:
我正在使用 PHP GD 制作头像。化身的脚和图像底部之间存在令人讨厌的空间。我想通过将头像“推”到底部来摆脱那个空间(见下文)。
这是我不喜欢的原始图像,以及我想要获取的图像:
有办法解决这个问题吗?谢谢。下面是用于图像生成的代码的主要部分。
$assets = array(
"../assets/shirt/Default.png",
"../assets/body/Default.png",
"../assets/hair/Default.png",
"../assets/eyes/Default.png",
"../assets/eyebrows/Default.png",
"../assets/mouth/Default.png",
"../assets/pants/Default.png"
);
$baseImage = imagecreatefrompng($assets[0]);
imagealphablending($baseImage, true);
imagesavealpha($baseImage, true);
foreach($assets as $item) {
$newImage = imagecreatefrompng($item);
imagecopy($baseImage, $newImage, 0, 0, 0, 0, 350, 550);
imagealphablending($baseImage, true);
imagesavealpha($baseImage, true);
}
if($_GET['x']) {
$sizex = $_GET['x']; if($sizex > 350) $sizex = 350;
$sizey = $_GET['y']; if($sizey > 550) $sizey = 550;
$png = imagecreatetruecolor($sizex, $sizey);
imagesavealpha($png, true);
$trans_colour = imagecolorallocatealpha($png, 0, 0, 0, 127);
imagefill($png, 0, 0, $trans_colour);
$blankImage = $png;
imagealphablending($blankImage, true);
imagesavealpha($blankImage, true);
imagecopyresampled($blankImage, $baseImage, 0, 0, 0, 0, $sizex, $sizey, 350, 550);
header("Content-type: image/png");
imagepng($blankImage);
}
else {
header("Content-type: image/png");
imagepng($baseImage);
}
注意:该代码的if($_GET['x']) { 部分是为了让我可以在现场生成不同大小的头像。它工作正常。
【问题讨论】:
-
你的问题很难理解,但为什么不将画布高度降低一个像素呢?
-
更新了图片和更好的解释。我不擅长解释事情。对不起。 :(
-
@BenD 我无法调整图像大小,这是因为用户可能会添加一套鞋子或其他东西会占用这个空间。
-
请同时提供图片 - 可能是 zip 的链接 - 以便大家试用代码。并不是说您浪费了辛苦赚来的赏金。