[英]How to set a transparent background with GD in PHP?
We have a script that generates MP3 waveform images, and it currently uses a specified foreground and background color. 我们有一个脚本可生成MP3波形图像,并且当前使用指定的前景和背景色。 What I'd like is to have the background completely transparent.
我想要的是使背景完全透明。
I've messed with the below script a bit but I have no idea what I'm doing. 我已经弄乱了以下脚本,但是我不知道自己在做什么。 Any ideas on how to get it to where it only generates the foreground color and not the background?
关于如何使其仅生成前景色而不生成背景的任何想法?
/**
* Image generation
*/
// how much detail we want. Larger number means less detail
// (basically, how many bytes/frames to skip processing)
// the lower the number means longer processing time
define("DETAIL", 5);
// get user vars from form
$width = isset($_POST["width"]) ? (int) $_POST["width"] : 775;
$height = isset($_POST["height"]) ? (int) $_POST["height"] : 122;
$background = isset($_POST["background"]) ? $_POST["background"] : $background_color;
$foreground = isset($_POST["foreground"]) ? $_POST["foreground"] : $foreground_color;
// create original image width based on amount of detail
$img = imagecreatetruecolor(sizeof($data) / DETAIL, $height);
// fill background of image
list($r, $g, $b) = html2rgb($background);
imagefilledrectangle($img, 0, 0, sizeof($data) / DETAIL, $height, imagecolorallocate($img, $r, $g, $b));
// generate background color
list($r, $g, $b) = html2rgb($foreground);
// loop through frames/bytes of wav data as genearted above
for($d = 0; $d < sizeof($data); $d += DETAIL) {
// relative value based on height of image being generated
// data values can range between 0 and 255
$v = (int) ($data[$d] / 255 * $height);
// draw the line on the image using the $v value and centering it vertically on the canvas
imageline($img, $d / DETAIL, 0 + ($height - $v), $d / DETAIL, $height - ($height - $v), imagecolorallocate($img, $r, $g, $b));
}
$outPngName= $outputName.".png";
This is what you are looking for. 这就是您要寻找的。
// fill background with transparent color / white
$transColor = imagecolortransparent($img, imagecolorallocatealpha($img, 255, 255, 255, 127));
imagefill($img, 0, 0, $transColor);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.