确认GD库是否已经正常加载:
/*第一种方法*/
echo '
';
print_r(get_extension_funcs('gd'));
/*第二种方法(比较常用)*/
var_dump(extension_loaded('gd'));
通过PHP操作画布、图像与PhotoShop类似,只是没有PhotoShop处理图像那么强大,但是原理是一样的。
1、建立一张画布,指定画布大小:
header('content-type:image/gif');
$img_gif1 = imagecreate(100,100);//普通画布
$img_gif2 = imagecreatetruecolor(200,200);//真彩色画布
注意文件编码是ANSI格式,不能是UTF8,否则图像不能正常显示。
2、画布默认是黑色的,如果想要指定画布颜色,代码如下:
$red = imagecolorallocate($img_gif1,255,0,0);
$white = imagecolorallocate($img_gif2,255,255,255);
3、将画布显示在浏览器界面中:
imagegif($img_gif1);
imagegif($img_gif2);
到目前为止,如果操作的是普通画布,已经可以看到一个红色的正方形图像了,如果是真彩色画布,还需要给画布手动填充颜色才能生效,代码如下:
imagefill($img_gif2,0,0,$white);
/*
//imagefill( resource image, int x, int y, int color );
//x,y 分别为填充的起始 x 坐标和 y 坐标,与 x, y 点颜色相同且相邻的点都会被填充。
*/
建立普通画布和真彩色画布完整代码如下:
header("content-type:image/gif");
$img_gif1 = imagecreate(200,200);
$red = imagecolorallocate($img_gif1,255,0,0);
imagegif($img_gif1);
$img_gif2 = imagecreatetruecolor(200,200);
$white = imagecolorallocate($img_gif2,255,255,255);
imagefill($img_gif2,0,0,$white);
imagegif($img_gif2);
因为jpeg图是有损压缩,png和gif图都是无损压缩,所以在执行imagejpeg()函数的时候,还可以将图像重命名并存储到本地,并且制定压缩比(0-100),100是压缩效果最好的。
$img = imagecreatetruecolor(300, 300);
$red = imagecolorallocate($img, 255, 0, 0);
$rect = imagerectangle($img, 10, 10, 180,180, $red);
header('Content-type:image/jpeg');
imagejpeg($img,null,10);
//null表示不存储,10表示压缩比。可以看到图像很模糊了
以上介绍了怎样建立一个画布,并且填充颜色,下面要说的是打开不同图像类型的处理方法,包括gif、jpeg、png等。
假如,我们用变量接收到一张图片,代码如下:
$fileName = 'pic.png';
这里介绍三种方法来打开这张图片,第三种方法对简单。
第一种:
$base = substr(strrchr(strtolower($fileName),'.'),1);
switch($base){
case 'gif':
$img = imagecreatefromgif($fileName);
break;
case 'jpeg';
$img = imagecreatefromjpeg($fileName);
break;
case 'png':
$img = imagecreatefrompng($fileName);
break;
default:
die('文件类型不正确');
}
header('Content-type:image/jpeg');
imagejpeg($img);
第二种:
$imginfo = getimagesize($fileName);
$base = substr(strrchr(strtolower($imginfo['mime']),'/'),1);
switch($base){
case 'gif':
$img = imagecreatefromgif($fileName);
break;
case 'jpeg':
$img = imagecreatefromjpeg($fileName);
break;
case 'png':
$img = imagecreatefrompng($fileName);
break;
default:
die('文件类型不正确');
}
header('Content-type:image/jpeg');
imagejpeg($img);
第三种:
$base = substr(strrchr(strtolower($fileName),'.'),1);
eval('$img = imagecreatefrom'.$base.'($fileName);');
header('Content-type:image/jpeg');
imagejpeg($img);
关键点是imagecreatefromjpeg、imagecreatefromgif、imagecreatefrompng这三个函数,最开始接收到图像信息的时候,要判断这样图的是什么类型的图像。