2013-10-15 204 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