使用 imagettftext 创建的文本确实具有完整的其他颜色,因为它应该具有(主要是插入图png图的颜色)。 为什么不采取颜色? 它必须是函数 resizePictureAndPlaceOnSign 中的某些内容,因为如果我将其注释掉,那就完美了。
public function resizePictureAndPlaceOnSign($filename, $new_width, $dst_x, $dst_y){
// create figure in memory
$figure = imagecreatefrompng($filename);
/*
CALC RATIO
*/
list($width, $height) = getimagesize($filename);
$vh = ($height/$width);
$new_height = $vh*$new_width;
$rnd_new_height = round($new_height, 0);
/*
*/
// make the figure smaller
imagecopyresampled($this->picture, $figure, $dst_x, $dst_y, 0, 0, $new_width, $new_height, $width, $height);
imagedestroy($figure);
}
public function drawPicture()
{
// $zufall = rand(1,999);
// create picture
$schild_leere_vorlage = imagecreatefrompng("schild_vorlage.png");
$this->picture = imagecreate(600,192);
// copy the image into the other image
# int ImageCopy ( resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h )
imagecopy($this->picture, $schild_leere_vorlage, 0, 0, 0, 0, 600, 192);
$filename = "figures/" . $_GET['figure'] . ".png";
/*********************/
$this->resizePictureAndPlaceOnSign($filename, 100, 25, 25);
// create colors
$color = 0x00000000FF;
$color = imagecolorallocate ($this->picture, 0, 0, 255);
// create text
imagettftext($this->picture, $this->fontSize , 0, 125, 100,$color , "cooperm.TTF", $this->name);
// header("Content-Type: image/jpeg");
imagepng($this->picture);
//$this->checkFontSize();
imagedestroy($this->picture);
}
}
答案 0 :(得分:1)
您正在创建调色板图像。当您复制其他图像时,您正在使用所有可用颜色,因此imagecolorallocate失败并将$color
设置为false。
要解决此问题,请在真彩色图像上进行合成。
$this->picture = imagecreatetruecolor(600,192);
如果出于某种原因需要调整输出,可以使用imagetruecolortopalette()
进行转换。
答案 1 :(得分:1)
你可以尝试
$color = imagecolorclosest ($this->picture, 0, 0, 255);
你仍然不会完全纯蓝色,因为mcrumley解释的原因,但它可能“足够接近”。