我需要使用PHP中的GD庫,使用透明度不同的另一個PNG圖像的4個部分創建PNG圖像。例如:PHP GD庫中的圖像透明度
我試圖做這件事情的方式不同,但我coudn't達到預期的效果。
預先感謝您;)
我需要使用PHP中的GD庫,使用透明度不同的另一個PNG圖像的4個部分創建PNG圖像。例如:PHP GD庫中的圖像透明度
我試圖做這件事情的方式不同,但我coudn't達到預期的效果。
預先感謝您;)
與imagecreatefrompng加載圖像()。使用imagecreatetruecolor()創建一個真彩色圖像,然後使用imagecolorallocatealpha()和imagefill()將其設置爲完全透明。然後使用imagealphablending()爲源圖像和目標圖像設置alpha混合模式。在此之後,您可以使用imagecopymerge()複製帶有alpha的圖像。
不幸的是,爲imagecopymerge()強制執行一個alpha乘法器是不可能的,所以這隻會讓你只有一半 - 不方便的選項包括在圖像的那些部分重複調用imagecopymerge()調用,取決於您要使用的透明度級別,還是逐像素地逐像素地處理多個源圖像之間的數據,這不便慢。
如果您未結合圖片*功能,請考慮使用ImageMagick代替。它更健壯。
我這樣做:
$output = imagecreatetruecolor([width], [height]);
imagesavealpha($output , true);
$trans_colour = imagecolorallocatealpha($output , 0, 0, 0, 127);
imagefill($output , 0, 0, $trans_colour);
現在的形象是透明的:)
整個腳本:
$output = imagecreatetruecolor([width], [height]);
imagesavealpha($output , true);
$trans_colour = imagecolorallocatealpha($output , 0, 0, 0, 127);
imagefill($output , 0, 0, $trans_colour);
header('Content-Type: image/png');
imagepng($output);
imagedestroy($output);
希望它能幫助!
這對我來說既可以使用gif也可以使用png(當然,如果使用該圖像類型,則將此示例中的每個png引用都更改爲gif)。
$virtual_image = imagecreatetruecolor($desired_width, $desired_height);
$colour = imagecolorallocate($virtual_image,255,255,255);
imagefill($virtual_image , 0, 0, $colour);
imagealphablending($virtual_image,true);
imagesavealpha($virtual_image , true);
//the next line only if you're resizing to a new $width/$height, otherwise leave this line out
imagecopyresampled($virtual_image, $source_image, 0, 0, 0, 0, $desired_width, $desired_height, $width, $height);
header('Content-Type: image/png');
if (imagepng($virtual_image)) imagedestroy($virtual_image);
你使用了哪些GD函數,以及哪種方法? –
我在大多數情況下使用imagecopy()和imagecopymerge(),幾次我得到的圖像完全是空白的,有時是黑色的,我真的在GD) – micnic