概述 PHP中绘制 图形 多使用GD库来实现,GD的功能多寡会因你使用的GD版本以及在配置期间启用了哪些选项而有很大的不同。 常用的GD函数 ImageCreate() : 创建一个基于调色板的图像 ImageColorAllocate() : 为一副图像分配颜色,很古怪的一点是: 第一次调用时
php中绘制图形多使用gd库来实现,gd的功能多寡会因你使用的gd版本以及在配置期间启用了哪些选项而有很大的不同。
ImageCreate() : 创建一个基于调色板的图像
ImageColorAllocate() : 为一副图像分配颜色,很古怪的一点是:第一次调用时分配图像的背景色,后面的调用才是用来分配线条、图形等
ImagePNG() : 将GD图形流以PNG格式输出到标准输出(通常是浏览器),通过可选参数可以输出到文件
ImageCreateFromPNG() : 从本地的PNG文件或URL创建一个PNG图像
ImageCreateFromJPEG() : 从本地的JPG文件或URL创建一个JPG图像(URL创建需要php.ini的allow_url_fopen设置为true)
ImageLine() :画线
ImageFilledRectangle() : 画一个矩形并填充颜色
内建字符函数基点:左上
TureType字体基点:左下
PostScript Type1基点:右下
立即学习“PHP免费学习笔记(深入)”;

针对 PHP 内建字体
function pc_ImageStringCenter($image, $text, $font) {
//字号对应的宽和高
$width = array(1 => 5, 6, 7, 8, 9);
$height = array(1 => 6, 8, 13, 15, 15);
// 获取图片的宽和高
$xi = ImageSX($image);
$yi = ImageSY($image);
// 获取文字的长度和高度
$xr = $width[$font] * strlen($text);
$yr = $height[$font];
// 计算中心点
$x = intval(($xi - $xr) / 2);
$y = intval(($yi - $yr) / 2);
return array($x, $y);
}
针对 PostScript 字体
function pc_ImagePSCenter($image, $text, $font, $size, $space = 0,
$tightness = 0, $angle = 0) {
// 获取图片的长宽
$xi = ImageSX($image);
$yi = ImageSY($image);
// 获取字符串左下和右上的坐标
list($xl, $yl, $xr, $yr) = ImagePSBBox($text, $font, $size,
$space, $tightness, $angle);
// 计算中心点
$x = intval(($xi - $xr) / 2);
$y = intval(($yi + $yr) / 2);
return array($x, $y);
}
针对 TrueType 字体
function pc_ImageTTFCenter($image, $text, $font, $size) {
// 计算图片长宽
$xi = ImageSX($image);
$yi = ImageSY($image);
// 计算字符串左右上下4个点的坐标
$box = ImageTTFBBox($size, $angle, $font, $text);
$xr = abs(max($box[2], $box[4]));//右上、右下角的X位置
$yr = abs(max($box[5], $box[7]));//右上、右下角的Y位置
// 计算中心点
$x = intval(($xi - $xr) / 2);
$y = intval(($yi + $yr) / 2);
return array($x, $y);
}这个例子用到了常用的GD函数

<?php
$image = ImageCreate(500,500);
$background_color= imagecolorallocate($image, 255,255,255);
$grayline = imagecolorallocate($image,230,230,230);
$color = imagecolorallocate($image, 200,0,0);
//imagefilledrectangle($image, 50, 10, 150, 40, $gray);
for($i=5;$i<500;$i=$i+5)
{
//横线
imageline($image, 5,$i,495,$i,$grayline);
//纵线
imageline($image,$i,5,$i,495,$grayline);
}
//正三角
$points = array(20,20,20,200,200,200);
imagefilledpolygon($image, $points,3, $color);
//倒三角
$points2 = array(22,20,202,20,202,200);
imagefilledpolygon($image, $points2,3, $color);
//椭圆
imagesetstyle($image,array($color));
imagearc($image, 300,100, 20,100, 0,360, $color);
imagearc($image, 300,100, 40,100, 0,360, $color);
//正圆
imagearc($image, 300,100, 100,100, 0,360, $color);
//输出文字
imagestring($image,8,20,300,"I love PHP language.",imagecolorallocate($image,0,0,50));
imagestring($image,4,300,480,"image size:500px *500px",imagecolorallocate($image,0,0,255));
//画五角星
$point = array();
for($i=0;$i<6;$i++)
{
//(int)(cX*(0.50+0.5*Math.Cos(dAngle))), (int)(cY*(0.50+0.5*Math.Sin(dAngle))) ,dAngle=(i*0.8-0.5)*Math.PI;
$dAngle = ($i*0.8-0.5)*pi();
$x = intval(200*(0.5+0.5*cos($dAngle)))+300;
$y = intval(200*(0.5+0.5*sin($dAngle)))+300;
$point[$i] = array('X'=>$x,'Y'=>$y);
}
imageline($image, $point[0]['X'],$point[0]['Y'], $point[1]['X'],$point[1]['Y'],$color);
imageline($image, $point[1]['X'],$point[1]['Y'], $point[2]['X'],$point[2]['Y'],$color);
imageline($image, $point[2]['X'],$point[2]['Y'], $point[3]['X'],$point[3]['Y'],$color);
imageline($image, $point[3]['X'],$point[3]['Y'], $point[4]['X'],$point[4]['Y'],$color);
imageline($image, $point[4]['X'],$point[4]['Y'], $point[0]['X'],$point[0]['Y'],$color);
//五角星外边
imageline($image, $point[0]['X'],$point[0]['Y'], $point[2]['X'],$point[2]['Y'],$color);
imageline($image, $point[1]['X'],$point[1]['Y'], $point[3]['X'],$point[3]['Y'],$color);
imageline($image, $point[2]['X'],$point[2]['Y'], $point[4]['X'],$point[4]['Y'],$color);
imageline($image, $point[3]['X'],$point[3]['Y'], $point[0]['X'],$point[0]['Y'],$color);
imageline($image, $point[4]['X'],$point[4]['Y'], $point[1]['X'],$point[1]['Y'],$color);
header('Content-type:image/png');
imagepng($image);
?>通过PHP的内置函数即可获取exif的数据
<?php
$exif = exif_read_data('/beth-and-seth.jpeg');
print_r($exif);
?>
获取到的数据是:
Array
(
[FileName] => beth-and-seth.jpg
[FileDateTime] => 1096055414
[FileSize] => 182080
[FileType] => 2
[MimeType] => image/jpeg
[divsFound] => APP12
[COMPUTED] => Array
(
[html] => width="642" height="855"
[Height] => 855
[Width] => 642
[IsColor] => 1
)
[Company] => Ducky
[Info] =>
)
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号