确认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这三个函数,最开始接收到图像信息的时候,要判断这样图的是什么类型的图像。
- 0、php安装
- 1、选择PHP作为首选后端语言的原因
- 2、PHP基本语法
- 3、PHP中变量和常量的区别
- 4、PHP中单引号和双引号的区别
- 5、PHP检测数据类型的几种方式
- 6、PHP数据类型转换
- 7、return、break、continue的区别
- 8、PHP代码重用
- 9、字符串移除或添加函数
- 10、PHP中字符串大小写切换以及翻转和加密
- 11、PHP字符串截取和截取函数
- 12、PHP字符串替换和比较函数
- 13、PHP字符串url解析和实体转换
- 14、addslashes在预定义字符串前添加反斜杠
- 15、PHP中的数组基本概念
- 16、数组函数implode、explode、in_array、each、list
- 17、PHP数组函数(count、reset、end、next、current、key)
- 18、ZendStudio软件破解安装包免费下载
- 19、【图文】ZendStudio汉化方法
- 20、数组函数in_array、array_search、array_change_key_case、array_chu
- 21、关闭PHP提示的方法(运行出现Notice : Use of undefined constant 的完美解决方案
- 22、PHP数组函数(array_diff_ukey、array_diff_uassoc、array_intersect
- 23、PHP数组函数(array_fill、array_filter、array_flip、array_key_exis
- 24、PHP数组去重及向前向后删除元素的函数
- 25、PHP数组函数(array_map、array_walk、array_walk_recursive)
- 26、PHP数组函数(compact、extract)
- 27、PHP数组函数(array_merge、array_merge_recursive)
- 28、PHP数组函数(range、array_count_values、array_product)
- 29、PHP数组函数(array_reduce、array_slice、array_splice、array_sum)
- 30、PHP数组排序函数总结
- 31、PHP中面向对象的基本概念及定义对象的方法
- 32、PHP创建对象与构造函数
- 33、PHP对象的释放
- 34、PHP面向对象的特性(抽象、封装、继承、多态)
- 35、PHP面向对象的public、private、protected之间的区别
- 36、PHP面向对象中的final和const的用法
- 37、PHP面向对象的static关键字
- 38、PHP中的单例模式
- 39、$this、self、parent详解
- 40、PHP中面向对象的抽象类和抽象方法
- 41、PHP面向对象中的接口interface
- 42、PHP面向对象中的魔术方法
- 43、面向对象方法get_object_vars、is_subclass_of、interface_exists
- 44、PHP中的数学函数方法总结
- 45、PHP文件处理disk_total_space、disk_free_space、dirname、file_exis
- 46、PHP目录操作rename和scandir
- 47、PHP操作目录opendir、readdir、glob
- 48、PHP打开fopen、读取fread、写入文件fwrite
- 49、PHP文件处理file_get_contents、file_put_contents、fgetc、fgets、fg
- 50、PHP截取字符串出现乱码的解决方法(UTF8和GBK)
- 51、PHP文件内容分页操作,避免乱码
- 52、PHP文件操作函数file、set_include_path、copy
- 53、PHP文件操作函数filemtime、filectime、fileatime、touch
- 54、PHP文件操作指针函数feof、ftell、fseek、rewind、fpassthru
- 55、PHP文件操作pathinfo、realpath、flock、tempnam、tmpfile
- 56、设置php.ini配置实现表单文件上传流程
- 57、PHP将上传到临时文件夹的文件移动到服务器指定文件夹内
- 58、PHP+input表单实现多文件上传
- 59、PHP通过超链接实现文件下载
- 60、发送header文件头信息实现文件下载
- 61、PHP中的日期时间_时区时间戳函数使用
- 62、PHP操作COOKIE缓冲区影响COOKIE传递方式
- 63、PHP中SESSION定义、建立、删除方式
- 64、PHP.INI配置文件中关于session的设置
- 65、HP中Session缓存的概念与用法
- 66、PHP自定义Session处理机制
- 67、通过MYSQL数据库操作Session会话完整源码类
- 68、PHP连接数据库实现分页代码
- 69、HTTP缓存实现原理详解
- 70、PHP连接数据库实现搜索+分页功能
- 71、PHP图像处理之建立画布填充颜色、打开不同图像类型处理
- 72、PHP颜色或图像填充及不同填充方式
- 73、PHP图像处理之画线&定义线样式&宽度&风格&笔刷
- 74、PHP图像处理:绘制色素及矩形图
- 75、PHP图像处理之画圆、弧线、网站饼状统计图绘制
- 76、PHP图像处理之绘制多边行及文字绘制
- 77、PHP 图像处理之获得文字宽高属性&图片水印函数功能
- 78、PHP生成图片验证码demo【OOP面向对象版本】
- 79、PHP图像处理 图像处理之处理文字及获得文字尺寸属性,imagecopymerge imagecop
- 80、替换用户输入的QQ表情
- 81、PHP封装MYSQL数据库操作类源码
- 82、PHP与XML技术结合使用解析