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)参考一下