php 画布背景颜色,71、PHP图像处理之建立画布填充颜色、打开不同图像类型处理...

确认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这三个函数,最开始接收到图像信息的时候,要判断这样图的是什么类型的图像。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值