PHP中创建并处理图象

在安装了一些第三方函数库之后,结合图形处理技能,你就可以迅速使用PHP创建和处理图像了。事实上,你也不需要很多几何学知识——因为我在中学的时候这门功课曾经不及格而现在却能使用PHP创建图像!
在使用基本的图像创建函数之前,需要安装GD库。要使用JPEG相关的图像创建函数还需要安装jpeg-6b。在图像中使用Type 1字体的时候还必须安装t1lib。asdf
在这里,你还需要对你的系统设置进行进一步地调整。首先安装t1lib并结束,然后是jpeg-6b。第三步安装GD函数库。确保以上三部分按顺序安装,原因是你需要编译GD库才能使用jpeg-6b库。如果首先安装jpeg-6b,编译就会出错,这会让你不知所措够上一段时间。
在三函数库之后,重新配置PHP。这是在轻松安装PHP的DSO版本时的典型方法。然后执行make clean,命令,并在当前配置提示中加入以下代码:

--with-gd=[/path/to/gd]
--with-jpeg-dir=[/path/to/jpeg-6b]
--with-t1lib=[/path/to/t1lib]
最后执行make、make install完成配置。重新启动 Apache,并运行phpinfo()函数以检查新功能是否正常运行,然后就可以开始了。
取决于安装的GD库版本,你可能具有创建GIF或者PNG图像的能力。关键是如果你已经安装了gd-1.6或者早期版本,则可处理GIF文件,但不能处理PNG文件;如果安装了gd-1.6或者以后版本,你可以处理PNG文件却又不能处理GIF文件。
创建一个简单的图像需要几个函数。我将按步骤演示如下。
输出包含你所创建图像MIME类型的文件头,本例中为PNG。
header ("Content-type: image/png");
使用ImageCreate()创建一变量存放空白图像。该函数需要一个图片像素尺寸。格式为ImageCreate(x_size, y_size),对250*250像素的图片,如下:
$newImg = ImageCreate(250,250);
由于此时你的图像还是空白,所以需要用某些色彩填满它。但首先需要用ImageColorAllocate()函数按照颜色的RGB值为每种颜色确定名字。函数的格式为ImageColorAllocate([image], [red], [green], [blue])。如是天蓝色,应使用:
$skyblue = ImageColorAllocate($newImg,136,193,255);

接着,用ImageFill()函数为图像填充以上颜色。实际上ImageFill()函数有多个版本,如ImageFillRectangle(), ImageFillPolygon()等等。为简单起见,采用ImageFill()函数进行颜色填充,格式如下:
ImageFill([image], [start x point], [start y point], [color])
ImageFill($newImg,0,0,$skyblue);
最后,创建最终图像并破坏图像流以释放内存并在结束后整理系统:

ImagePNG($newImg);
ImageDestroy($newImg);
你的代码应该看起来像这样:

<? header ("Content-type: image/png");
$newImg = ImageCreate(250,250);
$skyblue = ImageColorAllocate($newImg,136,193,255);
ImageFill($newImg,0,0,$skyblue);
ImagePNG($newImg);
ImageDestroy($newImg);
?>
如果调用脚本skyblue.php 并用自己的浏览器访问它,就会看到一个250*250像素的蓝色PNG图像。
还可以用图像创建函数处理图像,如对大图像创建的缩略图等。
假设你打算为某图片制作一个35*35像素大小的缩略图。所要做的即创建一个新的35*35像素大小图像;并产生一个包含原始图像内容的图像流;然后改变原始图像的大小,并将其放到新的空白图像中去。
达到此目的的关键函数是ImageCopyResized(),,格式如下所示:ImageCopyResized([new image handle],[original image handle],[new image X],[new Image Y],[original image X],[original image Y], [new image X], [new image Y],[original image X],[original image Y]);
注释在代码下面:

<? /* 发送文件头以使浏览器知道文件类型*/
header("Content-type: image/png");
/* 设置变量保存新图片长宽*/
$newWidth = 35;
$newHeight = 35;
/* 以给定长和宽创建空白新图片 */
$newImg = ImageCreate($newWidth,$newHeight);
/* 从原始大图获取数据 */
$origImg = ImageCreateFromPNG("test.png");
/* 复制更改尺寸后的图片。使用函数 ImageSX() 及 ImageSY 获取原始图片的x及x尺寸 */
ImageCopyResized($newImg,$origImg,0,0,0,0,$newWidth,$newHeight,ImageSX($origImg),ImageSY($origImg));
/* 创建最终图片并清空内存 */
ImagePNG($newImg);
ImageDestroy($newImg); ?>
如果调用脚本resized.php并使用浏览器访问此文件,可以看到一个35*35像素的缩略PNG图片。

(0)

相关推荐

  • PHP中创建并处理图象

    在安装了一些第三方函数库之后,结合图形处理技能,你就可以迅速使用PHP创建和处理图像了.事实上,你也不需要很多几何学知识--因为我在中学的时候这门功课曾经不及格而现在却能使用PHP创建图像! 在使用基本的图像创建函数之前,需要安装GD库.要使用JPEG相关的图像创建函数还需要安装jpeg-6b.在图像中使用Type 1字体的时候还必须安装t1lib.asdf 在这里,你还需要对你的系统设置进行进一步地调整.首先安装t1lib并结束,然后是jpeg-6b.第三步安装GD函数库.确保以上三部分按顺序

  • 在vue中使用eacharts创建graph关系图方式

    目录 使用eacharts创建graph关系图 vue中关系图组件 1.Graph.vue 2.GraphDemo.vue 使用eacharts创建graph关系图 在最近的工作中遇到了这个问题一开始遇到遇到问题且网上现在的教程不那么详细于是想着自己写一个来记录一下. 首先想使用echarts先下载echarts包命令如下 npm install echarts --save 然后将eacharts引入到项目中,推荐在main.js引入. import * as echarts from 'ec

  • Visual C++程序设计中Windows GDI贴图闪烁的解决方法

    本文实例讲述了Visual C++程序设计中Windows GDI贴图闪烁的解决方法.分享给大家供大家参考.具体如下: 一般的windows 复杂的界面需要使用多层窗口而且要用贴图来美化,所以不可避免在窗口移动或者改变大小的时候出现闪烁. 先来谈谈闪烁产生的原因 原因一: 如果熟悉显卡原理的话,调用GDI函数向屏幕输出的时候并不是立刻就显示在屏幕 上只是写到了显存里,而显卡每隔一段时间把显存的内容输出到屏幕上,这就是刷新周期. 一般显卡的刷新周期是 1/80秒左右,具体数字可以自己设置的. 这样

  • 微信小程序视图容器(swiper)组件创建轮播图

    本文为大家分享了微信小程序swiper组件创建轮播图的具体代码,供大家参考,具体内容如下 一.视图容器(Swiper) 1.swiper:滑块视图容器 微信官方文档 二.swiper应用 1.页面逻辑(index.js) Page({ data: { imgUrls: [ { link: '/pages/index/index', url: '/images/001.jpg' }, { link: '/pages/list/list', url: '/images/002.jpg' }, { l

  • 在IDEA中创建跑得起来的Springboot项目

    1. 关于 Tomcat 可能有一点会觉得很奇怪. 这明明跑动起来的是一个 web 程序,为什么启动方式不是启动 tomcat? 而是启动的一个 Java 类的 主方法? 这是因为这个 com.how2java.springboot.SpringbootApplication 类的主方法就把 tomcat 嵌入进去了,不需要手动启动 tomcat 了呢. 2. 关于插件 首先,在IDEA中开发Springboot应用和Eclipse里面一样,本质上都是一个maven 项目. 但是呢,IDEA 本

  • idea中创建maven的Javaweb工程并进行配置(图文教程)

    学完maven后,可以创建maven的javaweb工程,在创建完成后还需要一些配置,下面来说下具体步骤,在这里我创建的是一个模块,创建web项目的方式和创建模块一样 1.创建一个模块,点new-Module 2.选择maven,然后把对勾打上,选骨架,一定要选择第二个webapp骨架,如图 3.设置GroupId和ArtifactId,ArtifactId最好设置的和模块名称一样 4.设置maven的相关信息,如图 5.设置模块的名称和存储位置 6.点击完成,当出现红框中的内容的时候表示创建成

  • 如何基于 Blueprint 在游戏中创建实时音视频功能

    近日,Epic 公布了他们为次时代游戏准备的 Unreal 5 游戏引擎,以及一份效果惊艳的 Demo.据称,游戏中的每个资源有一百万个绘制三角面,每一帧有超过十亿个绘制三角面.也就是说,开发者构建的游戏场景,能获得电影特效场景般的视觉体验. 事实上,声网也有许多采用 Unreal 的开发者.为了能让开发者可以在游戏中快速实现实时音视频对话,声网 Agora Unreal SDK Beta 版也已上线. 由于 Unreal 为开发者提供了两种开发方式,一种是 Blueprint,即可视化编程,另

  • IDEA中创建maven项目引入相关依赖无法下载jar问题及解决方案

    先如今idea中的spring项目,springBoot的项目的开发一般都是基于maven创建的项目.这大大简化我我们对于各种依赖包的管理,同时又使得各种依赖包方便管理.但是当maven中的依赖下载出现问题的时候也是很头痛. 问题场景 在公司的项目中用到了fastjson依赖,而依赖的版本是动态获取的,如图 但是在某天启动项目的时候报错,一查看原来是maven中fastjson依赖的原因, 这时大部分的人的操作应该和我一样: 操作1 点击maven的更新按钮,让maven自动下载对应的jar包到

  • Idea工具中创建 SpringBoot工程及入门详解

    SpringBoot 项目创建 创建Module 基于IDEA创建项目Module,模块名为04-springboot-start,组id和包名为com.cy,如图所示: 填写module信息,如图所示: 选择项目module版本,暂时不需要自己手动添加任何依赖,如图所示: 填写Module名称,完成module创建,如图所示 项目结构分析 项目Module创建好以后,其代码结构分析,如图所示: SpringBoot 项目启动分析 启动入口 SpringBoot 工程中由SpringBootAp

  • Java 在PPT中创建散点图的实现示例

    目录 创建图表前 创建图表时 其他注意事项 本文将以Java代码示例展示如何在PPT幻灯片中创建散点图表. 创建图表前 需要在Java程序中导入用于操作PPT的jar包 Free Spire.Presentation for Java.可参考如下两种方法导入: 方法1:手动导入jar包.需下载jar包到本地,并解压,找到lib文件夹下的jar文件.然后按照如下步骤执行,导入: 方法2:maven仓库下载导入.需在pom.xml文件中配置maven仓库路径,并指定依赖.配置内容如下: <repos

随机推荐