首页>>后端>>php->php生成图片?

php生成图片?

时间:2023-12-05 本站 点击:0

php 生成图片不保存然后调用这个图片的信息

方法一:把修改尺寸后的图片转化成base64 格式 的数据,直接在页面使用:data:image/图片格式;base64,数据源;例如:img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAYAAABIdFAMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHhJREFUeNo8zjsOxCAMBFB/KEAUFFR0Cbng3nQPw68ArZdAlOZppPFIBhH5EAB8b+Tlt9MYQ6i1BuqFaq1CKSVcxZ2Acs6406KUgpt5/LCKuVgz5BDCSb13ZO99ZOdcZGvt4mJjzMVKqcha68iIePB86GAiOv8CDADlIUQBs7MD3wAAAABJRU5ErkJggg=="/

方法二:将原图传给页面,使用css样式裁剪图片显示

用php代码怎么以背景图片加上文字生成新的图片,然后在标题处绝对调用该图片?

?php

ob_clean(); //清除输出缓存

header("Content-type:image/jpeg"); //设置输出类型

$img="images/test.jpg"; //背景图片名

if(isset($_GET@["img"]))$img=$_GET@["img"]; //也可以通过img参数传入

$im=imagecreatefromjpeg($img); //读入背景图片

$text="文字内容"; //要加上的文字内容

if(isset($_GET@["text"]))$text=$_GET@["text"]; //也可以通过text参数传入

$fontFile="xxx.ttf"; //字体文件名,必须要

$fontSize=36; //字体尺寸

$fontColor=ImageColorAllocate($im,0,0,0); //字体颜色,这里是黑色

$textAngle=0; //文字显示的角度,0表示水平显示

$textLeft=20; //文字显示的x坐标

$textTop=60; //文字显示的y坐标

imagefttext($im,$fontSize,$textAngle,$textLeft,$textTop,$fontColor,$fontFile,$text); //把文字覆盖到图片上

Imagejpeg($im); //输出图片

ImageDestroy($im); //销毁图片

?

把以上文字保存为php文件,比如 img.php

然后在需要调用图片的地方用 img src="img.php?img=背景图片文件路径text=要加上的文字"/ 来调用

比如 img src="img.php?img=images/back.jpgtext=你好"/

php生成图片输出到前端页面乱码

是生成的图像里面有乱码,还是页面有乱码?图像里面有乱码在生成图片那里声明下编码格式:header("charset=UTF-8");

页面有乱码声明下页面的格式:header("Content-Type: text/html; charset=UTF-8");

两者是有区别的。

怎么用php生成图像,生成验证码

?php

//验证码类

class ValidateCode {

 private $charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789';//随机因子

 private $code;//验证码

 private $codelen = 4;//验证码长度

 private $width = 90;//宽度

 private $height = 40;//高度

 private $img;//图形资源句柄

 private $font;//指定的字体

 private $fontsize = 20;//指定字体大小

 private $fontcolor;//指定字体颜色

 //构造方法初始化

 public function __construct() {

  $this-font = dirname(__FILE__).'/font/elephant.ttf';//注意字体路径要写对,否则显示不了图片

 }

 //生成随机码

 private function createCode() {

  $_len = strlen($this-charset)-1;

  for ($i=0;$i$this-codelen;$i++) {

   $this-code .= $this-charset[mt_rand(0,$_len)];

  }

 }

 //生成背景

 private function createBg() {

  $this-img = imagecreatetruecolor($this-width, $this-height);

  $color = imagecolorallocate($this-img, mt_rand(157,255), mt_rand(157,255), mt_rand(157,255));

  imagefilledrectangle($this-img,0,$this-height,$this-width,0,$color);

 }

 //生成文字

 private function createFont() {

  $_x = $this-width / $this-codelen;

  for ($i=0;$i$this-codelen;$i++) {

   $this-fontcolor = imagecolorallocate($this-img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));

   imagettftext($this-img,$this-fontsize,mt_rand(-30,30),$_x*$i+mt_rand(1,5),$this-height / 1.4,$this-fontcolor,$this-font,$this-code[$i]);

  }

 }

 //生成线条、雪花

 private function createLine() {

  //线条

  for ($i=0;$i6;$i++) {

   $color = imagecolorallocate($this-img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));

   imageline($this-img,mt_rand(0,$this-width),mt_rand(0,$this-height),mt_rand(0,$this-width),mt_rand(0,$this-height),$color);

  }

  //雪花

  for ($i=0;$i100;$i++) {

   $color = imagecolorallocate($this-img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));

   imagestring($this-img,mt_rand(1,5),mt_rand(0,$this-width),mt_rand(0,$this-height),'*',$color);

  }

 }

 //输出

 private function outPut() {

  header('Content-type:image/png');

  imagepng($this-img);

  imagedestroy($this-img);

 }

 //对外生成

 public function doimg() {

  $this-createBg();

  $this-createCode();

  $this-createLine();

  $this-createFont();

  $this-outPut();

 }

 //获取验证码

 public function getCode() {

  return strtolower($this-code);

 }

}

用php的gd库生成png图片,用浏览器不能执行成功

你这个代码我在window上用过了,可以生成图片,代码没问题。

问题很有可能在apache上。你可以写一个crontab测试apache是否正常,如果不正常可以:

1,是否有脚本死循环

2, php.ini里memory_limit大小给的是否合适

3, httpd.conf里,合理调整 ServerLimit MaxClients 和 MaxRequestsPerChild

找不到的话可以直接在百度搜索里面搜这个child pid 2578 exit signal Segmentation fault (11)参考一下


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/php/13059.html