美文网首页
PHP GD 库自定义图片背景颜色

PHP GD 库自定义图片背景颜色

作者: patiencing | 来源:发表于2017-05-24 20:57 被阅读0次

缘起

开发"微信推广海报"的时, 背景图片未覆盖的地方默认会被黑色填充. 而我希望改成白色背景, 以对用户更友好一些. 但是无论设置成什么颜色, 图片的背景颜色一直都是黑色, 无法改变. 当时的代码如下:

$target = imagecreatetruecolor(640, 1008);
$background = imagecolorallocate($target, 255, 255, 255); //计划改成白色背景, 但是没有奏效

解决

修改背景颜色有 2 种方法:

  1. 如果希望生成的图片是全彩色的, 使用 imagecreatetruecolor() 函数, 配合设置颜色的 imagecolorallocate() 函数, 以及填充颜色的 imagefill() 函数;
  2. 如果允许生成的图片是 256 色的, 可以使用 imagecreate() 函数, 配合 imagecolorallocate() 函数;

00. 基础

首先, 在图像中使用的任何颜色都必须用 imagecolorallocate() 函数来生成:

imagecolorallocate ( $image , $red , $green , $blue )

01. 全彩色的 imagecreatetruecolor 方案

如果使用 imagecreatetruecolor() 函数, 除了设置颜色的 imagecolorallocate() , 还需要配合 imagefill() 函数:

imagecreatetruecolor ( $width , $height )

imagefill ( $image , $x , $y , $color )

比如, 设置"白色"的背景图 (RGB 值是 "255, 255, 255"):

$image = imagecreatetruecolor(640, 1008);
$white = imagecolorallocate($image, 255, 255, 255);
imagefill($image,0,0,$white); //这里的 "0, 0"是指坐标, 使用体验就类似 Windows 系统"画图"软件的"颜料桶", 点一下之后, 在整个封闭区间内填充颜色

02. 非全彩色的 imagecreate 方案

如果对图片的颜色要求不高, 可以接受 256 色, 则可以使用这个方案.

imagecreate ( $width , $height )

使用 imagecreate() 函数时, 用 imagecolorallocate() 函数设置的第 1 个颜色将默认成为背景颜色.

比如, 设置"灰色"的背景图:

$image = imagecreate(640, 1008);
$gray = imagecolorallocate($image, 235, 235, 235); //用 imagecolorallocate 函数设置的第 1 个颜色将自动成为背景颜色

再次提醒:
基于 imagecreate() 生成的图片是 256 色, 并不是全彩色, 也就是说颜色会失真, 所以推荐使用上面的第一种方案 -- 全彩色的 imagecreatetruecolor() 方案.


题外 -- 用 GD 库创建图片的基本步骤

//第 1 步: 创建画布
$image = imagecreatetruecolor(640, 1008); //指定画布尺寸

//第 2 步: 创建颜色
$white = imagecolorallocate($image, 255, 255, 255); //创建颜色
$black = imagecolorallocate($image, 0, 0, 0); //创建颜色
imagefill($image,0,0,$white); //自定义画布的背景颜色

//第 3 步: 绘制图形
imagefilledrectangle($image, 50, 50, 150, 150, $black);

//第 4 步: 输出图片
header("Content-Type: image/png"); //需要将图片发送到浏览器
imagepng($image, $path); //输出图片到 $path 的位置. $path 包括图片的名称
imagedestroy($image); //释放内存

参考文章


文章历史

  • 2017/05/24 (第一次发布)
  • 2017/06/03 修改
  • 2017/06/13 修改; 增加 imagedestroy

如果我的文章对你有用, 希望给些改进的建议, 或者打个"喜欢" _

相关文章

  • PHP GD 库自定义图片背景颜色

    缘起 开发"微信推广海报"的时, 背景图片未覆盖的地方默认会被黑色填充. 而我希望改成白色背景, 以对用户更友好一...

  • php拓展库

    一、gd库是php处理图形的扩展库,使用GD库可以处理图片或者生成图片。 1 网站上常用GD库生成缩略图 2 对图...

  • PHP使用GD库生成验证码图片,实现图片验证

    本文记录从php 下载配置GD图片生成库 到使用该库生成验证码图片,网页上实现验证码。使用技术:php使用GD库绘...

  • PHP GD库与Imagick库简单使用及区别

    目前主流的PHP项目目前使用的是GD库来处理图片 由于GD库性能与Imagick相比,性能低下,并且GD库在处理大...

  • PHP常见面试题(二)

    1.GD库是做什么用的? 答:GD库,是PHP处理图形的扩展库。GD库提供了一系列用来处理图片的API,使用GD库...

  • GD实战开发验证码

    GD GD库是php处理图形的扩展库,GD库提供了一系列用来处理图片的API,在网站上GD库通常用来生成缩略图,或...

  • 图形图像操作

    PHP图形操作之GD库简介 GD指的是Graphic Device,PHP的GD库是用来处理图形的扩展库,通过GD...

  • PHP项目图片验证码不显示

    PHP项目图片验证码不显示 在PHP项目中图片及图片验证码不显示,是由于PHP没有安装gd扩展库,无法正常显示图片...

  • PHP学习笔记 - 进阶篇(9)

    图形图像操作 GD库简介 GD指的是Graphic Device,PHP的GD库是用来处理图形的扩展库,通过GD库...

  • PHP gd库添加freetype

    前言:gd库未安装freetype 可能导致验证码图片加载不出来等问题。 1、cd (php源码)/ext/gd ...

网友评论

      本文标题:PHP GD 库自定义图片背景颜色

      本文链接:https://www.haomeiwen.com/subject/ghnoxxtx.html