如何在PHP中使用背景图像而不是颜色imagecolorallocate()

时间:2014-02-13 06:24:49

标签: php html css

我想创建一个自定义验证码。 所以我需要将文本和背景图像转换为单个图像;
现在我只能在 imagecolorallocate()中使用背景颜色
这是我的代码

<?php
  $text = rand (1000, 9999);
  $my_img = imagecreate( 200, 80 );
  $background = imagecolorallocate( $my_img,255, 255, 255);
  $text_colour = imagecolorallocate( $my_img, 0, 0, 255 );
  $line_colour = imagecolorallocate( $my_img, 255, 255, 255 );
  imagestring( $my_img, 4, 30, 25, $text, $text_colour );
  imagesetthickness ( $my_img, 5 );
  imageline( $my_img, 30, 45, 165, 45, $line_colour );
  header( "Content-type: image/png" );
  imagepng( $my_img );
  imagecolordeallocate( $line_color );
  imagecolordeallocate( $text_color );
  imagecolordeallocate( $background );
  imagedestroy( $my_img );
   ?>

3 个答案:

答案 0 :(得分:2)

 <?php
 function LoadJpeg($imgname)
 {
  if(!$im)
{
    /* Create a black image */
    $im  = imagecreatetruecolor(150, 30);
    $bgc = imagecolorallocate($im, 255, 255, 255);
    $tc  = imagecolorallocate($im, 0, 0, 0);

    imagefilledrectangle($im, 0, 0, 150, 30, $bgc);

    /* Output an error message */
    imagestring($im, 1, 5, 5, 'Error loading ' . $imgname, $tc);
}

return $im;
}

 header('Content-Type: image/jpeg');
 $img = LoadJpeg('bogus.image');
 imagejpeg($img);
 imagedestroy($img);
 ?>

答案 1 :(得分:1)

您可以使用 imagecreatefromjpg PHP函数或基于图像类型的任何相关函数,例如 imagecreatefrompng

这将使用您可以用作背景文件的所选文件在PHP中创建一个图像元素。

来自PHP manual

您的下一个选项是使用 imagecopymerge(),它将使用现有的图像元素并将其与另一个图像合并。来自PHP manual

的信息

答案 2 :(得分:1)

要为新图片添加背景,您需要使用imagecreatefrompng代替imagecreate

您可以浏览另一个堆栈溢出link