2012-06-26 34 views
1

就我而言,我創建了一個用於將許多圖像合併爲單個圖像的php腳本。在合併過程中,我想旋轉幾張圖片。如何在php GD中應用旋轉函數後刪除黑色背景?

該腳本工作正常。但旋轉的圖像顯示黑色背景色。

我應該刪除黑色背景顏色。

我正在使用下面的腳本來處理PHP中的旋轉功能。 此腳本可以合併三個PNG圖像與旋轉功能。

問題:

  • 一些暗線示出了在圖像周圍在IE 8旋轉後時。
  • 背景顯示黑色的,而不是白色

如何解決這些問題。

請修復此腳本問題併發布您的答案。

$im = imagecreatetruecolor(500, 600); 

$white = imagecolorallocate($im, 255, 255, 255); 

$black = imagecolorallocate($im, 000, 000, 000); 


$source=imagecreatefrompng("http://cn1.kaboodle.com/img/c/0/0/179/4/AAAADDpe-ZwAAAAAAXlIhA/funny-shirt-pikachu-pokemon-anime-mens-cool-humor-t-shirt.png?v=1313557837000"); 
$asd=imagerotate($source, 280, 0); 
imagecolortransparent($asd, $white); 
imageantialias($asd, true); 
$insert_x = imagesx($asd); 
$insert_y = imagesy($asd); 
imagecopymerge ($im , $asd , 0 , 0 , 0 , 0 , $insert_x , $insert_y , 100); 


$source1=imagecreatefrompng("http://www.vouchersmate.com/content/images/thumbs/0001595_worlds_best_dad_to_be_t_shirts.png"); 
$asd1=imagerotate($source1, 180, 0); 
imagecolortransparent($asd1, $white); 
imageantialias($asd1, true); 
$insert_x1 = imagesx($asd1); 
$insert_y1 = imagesy($asd1); 
imagecopymerge ($im , $asd1 , 110 , 55 , 0 , 0 , $insert_x1 , $insert_y1 , 100); 


$source2=imagecreatefrompng("http://goalwa.files.wordpress.com/2011/11/green_shirt.png?w=300&h=300"); 
$asd2=imagerotate($source2, 320, 0); 
imagecolortransparent($asd2, $white); 
imageantialias($asd2, true); 
$insert_x2 = imagesx($asd2); 
$insert_y2 = imagesy($asd2); 
imagecopymerge ($im , $asd2 , 170 , 90 , 0 , 0 , $insert_x2 , $insert_y2 , 100); 



imagecolortransparent($im, $black); 

imageantialias($im, true); 

imagealphablending($im, true); 
imagesavealpha($im, true); 

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

我使用手柄下面的腳本在PHP旋轉功能。 此腳本可以合併三個PNG圖像與旋轉功能。

問題:

  • 一些暗線示出了在圖像周圍在IE 8旋轉後時。
  • 背景顯示黑色的,而不是白色

如何解決這些問題。

請修復此腳本問題併發布您的答案。

$im = imagecreatetruecolor(500, 600); 

$white = imagecolorallocate($im, 255, 255, 255); 

$black = imagecolorallocate($im, 000, 000, 000); 


$source=imagecreatefrompng("http://cn1.kaboodle.com/img/c/0/0/179/4/AAAADDpe-ZwAAAAAAXlIhA/funny-shirt-pikachu-pokemon-anime-mens-cool-humor-t-shirt.png?v=1313557837000"); 
$asd=imagerotate($source, 280, 0); 
imagecolortransparent($asd, $white); 
imageantialias($asd, true); 
$insert_x = imagesx($asd); 
$insert_y = imagesy($asd); 
imagecopymerge ($im , $asd , 0 , 0 , 0 , 0 , $insert_x , $insert_y , 100); 


$source1=imagecreatefrompng("http://www.vouchersmate.com/content/images/thumbs/0001595_worlds_best_dad_to_be_t_shirts.png"); 
$asd1=imagerotate($source1, 180, 0); 
imagecolortransparent($asd1, $white); 
imageantialias($asd1, true); 
$insert_x1 = imagesx($asd1); 
$insert_y1 = imagesy($asd1); 
imagecopymerge ($im , $asd1 , 110 , 55 , 0 , 0 , $insert_x1 , $insert_y1 , 100); 


$source2=imagecreatefrompng("http://goalwa.files.wordpress.com/2011/11/green_shirt.png?w=300&h=300"); 
$asd2=imagerotate($source2, 320, 0); 
imagecolortransparent($asd2, $white); 
imageantialias($asd2, true); 
$insert_x2 = imagesx($asd2); 
$insert_y2 = imagesy($asd2); 
imagecopymerge ($im , $asd2 , 170 , 90 , 0 , 0 , $insert_x2 , $insert_y2 , 100); 



imagecolortransparent($im, $black); 

imageantialias($im, true); 

imagealphablending($im, true); 
imagesavealpha($im, true); 

header('Content-Type: image/png'); 
imagepng($im); 
+2

您好,您可以爲我們添加一些代碼,以幫助您找出錯誤。 –

+0

我已經添加了代碼。 – shan

回答

0

沒有任何代碼來檢查,這是很難找出究竟你的問題,但我會嘗試:

你所看到的黑色是沒有顏色的。你可能想要的是該區域是透明的。嘗試添加以下代碼:

imagealphablending($im, true); 
imagesavealpha($im, true); 
0

你在尋找什麼背景?

您可以使用imagefilledrectangle以任何你喜歡的顏色填充背景。例如,假設您的圖像寬度爲500px,高度爲250px;

$white = imagecolorallocate($im, 255, 255, 255); 
imagefilledrectangle($im, 0, 0, 500, 250, $white); 

您現在已經有了一個完整的白色背景可以使用。你也可以看看imagecolortransparent; http://php.net/manual/en/function.imagecolortransparent.php如果你想創建一個透明的背景。