2013-10-15 304 views
3

我搜索并尝试了所有我发现的方式,但我无法托管。imagecopy黑色背景

我想要做的是:把两个预生成(与php gd)图像并排放置在它们之间的空间。

我创建这两个图片包含有这些行:

$sideMask = imagecreatefrompng($maskFile); 
imagealphablending($sideMask, false); 
imagesavealpha($sideMask, true); 

$image_blank = imagecreatetruecolor($newWidth,$newHeight); 

$white = imagecolorallocate($image_blank, 255, 255, 255); 
imagefill($image_blank, 0, 0, $white); 

imagecopy($image_blank, $ResizedSourceFile, 0, 0, 0, 0, $newWidth, $newHeight); 
imagecopy($image_blank, $sideMask, $maskX, 0, 0, 0, $maskWidth, $maskHeight); 

$image_blank_mask = imagecreatetruecolor($maskWidth,$maskHeight); 

imagecopy($image_blank_mask, $image_blank, 0, 0, $maskX, 0, $maskWidth, $maskHeight); 

return $image_blank_mask; 

,并试图将它们与这些结合起来:

$maxHeight = 1626; 
$sideSpace = 35; 

$maxWidth = 1522 + $sideSpace; 

$Img01 = $Img01Created; 
$Img02 = $Img02Created; 

$BothSideBlank = imagecreatetruecolor($maxWidth,$maxHeight); 
$white = imagecolorallocate($BothSideBlank, 255, 255, 255); 
imagefill($BothSideBlank, 0, 0, $white); 

imagecopy($BothSideBlank, $Img01, 0, 0, 0, 0, $maxWidth, $maxHeight); 
imagecopy($BothSideBlank, $Img02, (763+$sideSpace), 0, 0, 0, $maxWidth, $maxHeight); 

imagejpeg($BothSideBlank, "Test.jpg",100); 

有了这个代码有图像之间的黑色背景。实际上图像背景的右侧是黑色的。如果我删除

imagecopy($BothSideBlank, $Img01, 0, 0, 0, 0, $maxWidth, $maxHeight); 

这行背景是白色的,如我所料。但是,如果我删除其他行并添加此行。背景是黑色的。

我试过所有的东西,但不能管理它的工作。

我想念什么吗?

难道是因为一边生成这些图像?

任何帮助将不胜感激。

谢谢。

回答

2

在'图像拷贝'中使用正确的大小而不是'$ maxWidth'和'$ maxHeight'。

$size01 = getimagesize($Img01); 
$size02 = getimagesize($Img02); 

imagecopy($BothSideBlank, $Img01, 0, 0, 0, 0, $size01[0], $size01[1]); 
imagecopy($BothSideBlank, $Img02, ($size01[0]+$sideSpace), 0, 0, 0, $size02[0], $size02[1]); 
+0

工程!非常感谢你。 – meln