🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
确认GD库是否已经正常加载: /*第一种方法*/ echo '<pre>'; 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这三个函数,最开始接收到图像信息的时候,要判断这样图的是什么类型的图像。