PHP输出图像imagegif、imagejpeg与imagepng函数用法

news/2024/7/2 20:55:11

详细的分析了imagegif()、imagejpeg()、imagepng()和imagewbmp()函数的功能、参数含义及使用技巧

imagegif()、imagejpeg()、imagepng() 和 imagewbmp() 函数分别允许以 GIF、JPEG、PNG 和 WBMP 格式将图像输出到浏览器或文件。

PHP 输出图像

PHP 允许将图像以不同格式输出:

imagegif():以 GIF 格式将图像输出到浏览器或文件
imagejpeg():以 JPEG 格式将图像输出到浏览器或文件
imagepng():以 PNG 格式将图像输出到浏览器或文件
imagewbmp():以 WBMP 格式将图像输出到浏览器或文件

语法:

?
1
2
3
4
bool imagegif ( resource image [, string filename] )
bool imagejpeg ( resource image [, string filename [, int quality]] )
bool imagepng ( resource image [, string filename] )
bool imagewbmp ( resource image [, string filename [, int foreground]] )

参数说明:

参数 说明
image 欲输出的图像资源,如 imagecreate() 或 imagecreatefrom 系列函数的返回值
filename 可选,指定输出图像的文件名。如果省略,则原始图像流将被直接输出。
quality 可选,指定图像质量,范围从 0(最差质量,文件最小)到 100(最佳质量,文件最大),默认75 ,imagejpeg() 独有参数
foreground 可选,指定前景色,默认前景色是黑色,imagewbmp() 独有参数

绘制一个圆弧并保存到 images 目录下:

?
1
2
3
4
5
6
7
8
9
<?php
header( "Content-type: image/png" );
$im = @imagecreate(200, 200) or die ( "创建图像资源失败" );
$bg = imagecolorallocate( $im , 204, 204, 204);
$red = imagecolorallocate( $im , 255, 0, 0);
imagearc( $im , 100, 100, 150, 150, 0, 360, $red );
imagepng( $im , "images/circle.png" );
imagedestroy( $im );
?>

在 images 目录下就会生成一个 circle.png 文件。



另一种解释:

使用GD库中提供的函数动态绘制完成图像以后,就需要输出到浏览器或者将图像保存起来。在PHP中,可以将动态绘制完成的画布,直接生成GIF、JPEG、PNG和WBMP四种图像格式。可以通过调用下面四个函数生成这些格式的图像:

复制代码代码如下:

  bool imagegif(resource $image[,string $filename])                              //以GIF格式将图像输出
  bool imagejpeg(resource $image[,string $filename[,int $quality]])                        //以JPEG格式将图像输出
  bool imagepng(resource $image[,string $filename])                                 //以PNG格式将图像输出
  bool imagewbmp(resource $image[,string $filename[,int $foreground]])                      //以WBMP格式将图像输出

  以上四个函数的使用类似,前两个参数的使用是相同的。第一个参数$image为必选项,是前面介绍的图像引用句柄。如果部位这些函数提供其他参数,访问时则直接将原图像流出,并在浏览器使用中显示动态输出的图像。但一定要在输出之前,使用header()函数发送标头信息,用来通知浏览器使用正确的MIME类型对接收的内容进行解析,让它知道我们发送的是图片而不似乎文本的HTML。以下代码段通过自动检测GD库支持的图像类型,来写出移植性更好的PHP程序。如下所示:

复制代码代码如下:

<?php
    if(function_exists("imagegif")){                //判断生成GIF格式图像的函数是否存在
        header("Content-type:image/gif");           //发送标头信息设置MIME类型为image/gif
        imagegif($im);                              //以GIF格式将图像输出到浏览器
    }elseif(function_exists("imageipeg")){
        header("Content-type:image/jpeg");
        imagejpeg($im,"",0.5);
    }elseif(function_exists("imagepng")){
        header("Content-type:image/png");
        imagepng($im);
    }elseif(function_exists("imagewbmp")){
        header("Content-type:image/wbmp");
        imagewbmp($im);
    }else{
        die("在PHP服务器中,不支持图像");
    }
?>

如果希望将PHP动态绘制的图像保存在本地服务器上,则必须在第二个可选参数中指定一个文件名字符串。这样不仅不会将图像直接输出到浏览器,也不需要使用header()函数发送标头信息。如果使用imageJPEG()函数生成JPEG格式的图像,还可以通过第三个可选参数$quality指定JPEG格式图像的品质,该参数可以提供的值是从0(最差品质,但文件最小)到100(最高品质,文件也最大)的整数,默认值为75.也可以为函数imageWBMP()提供第三个可选参数$forground,指定图像的前景颜色,默认颜色值为黑色。




http://www.niftyadmin.cn/n/3585853.html

相关文章

nginx 版本升级和添加模块详解

版本升级 把1.16.0版本升级为1.18.0 查看本机现在版本为1.16.0 [rootlocalhost ]# /usr/local/nginx/sbin/nginx -v nginx version: nginx/1.16.0 1&#xff0c;下载1.18.0的版本 [rootlocalhost ]# wget http://nginx.org/download/nginx-1.18.0.tar.gz 2&#xff0c;解压 […

nginx 证书申请和证书的使用

1&#xff0c;证书申请 申请证书要有阿里云的域名 阿里云提供免费的证书&#xff0c;不需要人工审核&#xff0c;用来做测试是非常不错的选择&#xff0c;申请地址如下URL。 购买完了以后申请证书 证书签发之后&#xff0c;可以在列表中可以看到状态栏中为 已签发 &#xff0…

getopt和getopt_long函数

本文转自&#xff1a;http://blog.csdn.net/cashey1991/article/details/7942809 平时在写程序时常常需要对命令行参数进行处理&#xff0c;当命令行参数个数较多时&#xff0c;如果按照顺序一个一个定义参数含义很容易造成混乱&#xff0c;而且如果程序只按顺序处理参数的话&a…

'mysql.innodb_index_stats' doesn't exist when using LOCK TABLES问题原因及解决方法

前言 下面总结的是使用mysqldump备份整个数据库时的常见的一个报错的原因及解决方法。 报错如下 mysqldump: Got error: 1146: Table ‘mysql.innodb_index_stats’ doesn’t exist when using LOCK TABLES 执行导出数据库时报1146&#xff0c;mysql_innodb_table_stats显示没有…

数据Cocos2d-x常用功能-Cocos2d-x常用工具:计时器、数据读写、文件读写(共6部分)

第三阶段&#xff1a;常用功能5 1.Cocos2d-x计时器每一帧执行的时候执行一次#include "cocos2d.h"class HelloWorld : public cocos2d::Layer { private: cocos2d::LabelTTF *label; public: // theres no id in cpp, so we recommend returning…

lvs架构

lvs 4种模式 1、nat(网络地址转换模式) 2、dr(直接路由模式) 3、tun(隧道模式) 4、full-nat(双向转换模式) 1&#xff0c;nat&#xff08;网络地址转换模式架构&#xff09; 1、nat模式优势是&#xff0c;后端可以是任意支持tcp/ip的操作系统&#xff0c;缺点是响应时回包必须…

容器:用empty来代替检查size()是否为0

对于任意容器c&#xff0c;写下 if (c.size() 0)... 本质上等价于写下 if (c.empty())... 这就是例子。你可能会奇怪为什么一个构造会比另一个好&#xff0c;特别是事实上empty的典型实现是一个返回size是否返回0的内联函数。 你应该首选empty的构造&#xff0c;而且理由很…

nginx 代理 负载均衡 网站转接的用法

反向代理 1&#xff0c;准备两台nginx真实服务器 a、nginx-1 启动网站(内容)&#xff08;作为网站服务器&#xff09; b、nginx-2 启动代理程序 一、编辑nginx-2的配置文件 [rootnginx-server ~]# vim /etc/nginx/conf.d/default.conf server {server {listen 80; ser…