//创建画布
$im = imagecreatetruecolor(600,590);
//定义颜色
$white = imagecolorallocate($im,255,255,255);
$black = imagecolorallocate($im,0,0,0);
//更改画布背景色
imagefill($im,0,0,$white);
//插入图片
$srcimg = imagecreatefromgif('bg.gif'); //这里只识别gif 要识别其他图像需要判断类型 载入下面↓不同图像载入函数
$srcinfo = getimagesize('img.gif');
/*print_r($srcinfo);
Array ( [0] => 730 [1] => 711 [2] => 1 [3] => width="730" height="711" [bits] => 8 [channels] => 3 [mime] => image/gif ) 
exit;*/
imagecopy($im,$srcimg,0,0,0,0,$srcinfo[0],$srcinfo[1]);
//写字
$str = 'nihao你 好
123';
imagettftext($im,20,0,65,200,$black,'font.ttf',$str);


header("content-type: image/png");
imagepng($im);
imagedestroy($im);

优先级是根据代码的层级顺序

imagecreatefrom 系列函数用于从文件或 URL 载入一幅图像。

载入图像

imagecreatefrom 系列函数用于从文件或 URL 载入一幅图像,成功返回图像资源,失败则返回一个空字符串。

该系列函数有:

  • imagecreatefromgif():创建一块画布,并从 GIF 文件或 URL 地址载入一副图像
  • imagecreatefromjpeg():创建一块画布,并从 JPEG 文件或 URL 地址载入一副图像
  • imagecreatefrompng():创建一块画布,并从 PNG 文件或 URL 地址载入一副图像
  • imagecreatefromwbmp():创建一块画布,并从 WBMP 文件或 URL 地址载入一副图像
  • imagecreatefromstring():创建一块画布,并从字符串中的图像流新建一副图像

语法:

resource imagecreatefromgif( string filename )
resource imagecreatefromjpeg( string filename )
resource imagecreatefrompng( string filename )
resource imagecreatefromwbmp( string filename )
resource imagecreatefromstring( string image )

例子:

<?
header("Content-type: image/jpeg");

//创建并载入一幅图像
$im = @imagecreatefromjpeg("images/flower_1.jpg");

//错误处理
if(!$im){
    $im  = imagecreatetruecolor(150, 30);
    $bg = imagecolorallocate($im, 255, 255, 255);
    $text_color  = imagecolorallocate($im, 0, 0, 255);
    //填充背景色
    imagefilledrectangle($im, 0, 0, 150, 30, $bg);
    //以图像方式输出错误信息
    imagestring($im, 3, 5, 5, "Error loading image", $text_color);
} else {
    //输出该图像
    imagejpeg($im);
}
?>

在该例子中,我们载入并输出原图。由于 PHP 对图像创建错误没有友好的错误提示,因此我们自定义了错误处理信息。

提示

对于 PHP 生成的图片,如果要直接在普通网页中显示而不是通过 header 输出,可以通过如下的方式调用:

<img src="pic.php" />

假如缩放的话 注意还要判断是加载Png还是gif还是jpg

    //$filepath图片路径,$percent缩放百分比  
    function imagepress($filepath,$percent='0.5'){  
    // 图片类型  
    header('Content-Type: image/jpeg');  
    // 获得新的图片大小  
    list($width, $height) = getimagesize($filepath);  
    $new_width = $width * $percent;  
    $new_height = $height * $percent;  
    // 重新取样  
    $image_p = imagecreatetruecolor($new_width, $new_height);  
    $image = imagecreatefromjpeg($filepath);  
    imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);  
    // 输出  
    return imagejpeg($image_p, null, 100);  
    }  

判断类型简单 使用

$srcinfo2 = getimagesize($src2);
if($srcinfo2[‘mime’] == ‘image/jpeg’){
$srcimg2 = imagecreatefromjpeg($src2);
}else if($srcinfo2[‘mime’] == ‘image/gif’){
$srcimg2 = imagecreatefromgif($src2);
}

php 正确的输出json格式

php直接输出json格式,很多新手有一个误区,以为用echo json_encode($data);这样就是输出json数据了,没错这样输出文本是json格式文本而不是json数据,正确的...

阅读全文

number_format() 系统BUG 函数去掉数字千分位的逗号

用这个number_format() 到千位数字就会出现逗号分隔符 这个问题很严重 做资金系统会出现毁灭性的计算问题 因此我针对这个函数做出修改 function number_forma...

阅读全文

php自定义保留截取小数点 不四舍五入 直接截取

使用正则表达式 $num = '123.95555555555'; $pat = '/(\d+\.\d{5})\d*/'; echo preg_replace($pat,"\${1}",$num); 听说正则效率低,我来个不用正则的方法,...

阅读全文

评论已经关闭。