好得很程序员自学网
  • 首页
  • 后端语言
    • C#
    • PHP
    • Python
    • java
    • Golang
    • ASP.NET
  • 前端开发
    • Angular
    • react框架
    • LayUi开发
    • javascript
    • HTML与HTML5
    • CSS与CSS3
    • jQuery
    • Bootstrap
    • NodeJS
    • Vue与小程序技术
    • Photoshop
  • 数据库技术
    • MSSQL
    • MYSQL
    • Redis
    • MongoDB
    • Oracle
    • PostgreSQL
    • Sqlite
    • 数据库基础
    • 数据库排错
  • CMS系统
    • HDHCMS
    • WordPress
    • Dedecms
    • PhpCms
    • 帝国CMS
    • ThinkPHP
    • Discuz
    • ZBlog
    • ECSHOP
  • 高手进阶
    • Android技术
    • 正则表达式
    • 数据结构与算法
  • 系统运维
    • Windows
    • apache
    • 服务器排错
    • 网站安全
    • nginx
    • linux系统
    • MacOS
  • 学习教程
    • 前端脚本教程
    • HTML与CSS 教程
    • 脚本语言教程
    • 数据库教程
    • 应用系统教程
  • 新技术
  • 编程导航
    • 区块链
    • IT资讯
    • 设计灵感
    • 建站资源
    • 开发团队
    • 程序社区
    • 图标图库
    • 图形动效
    • IDE环境
    • 在线工具
    • 调试测试
    • Node开发
    • 游戏框架
    • CSS库
    • Jquery插件
    • Js插件
    • Web框架
    • 移动端框架
    • 模块管理
    • 开发社区
    • 在线课堂
    • 框架类库
    • 项目托管
    • 云服务

当前位置:首页>后端语言>PHP
<tfoot draggable='sEl'></tfoot>

php图像入门实例 php图像入门实例图

很多站长朋友们都不太清楚php图像入门实例,今天小编就来给大家整理php图像入门实例,希望对各位有所帮助,具体内容如下:

本文目录一览: 1、 PHP实现上传图片到数据库并显示输出的方法 2、 PHP等比例压缩图片的实例代码 3、 PHP中图像处理怎么写一个折线统计图 PHP实现上传图片到数据库并显示输出的方法

本文实例讲述了PHP实现上传图片到数据库并显示输出的方法。分享给大家供大家参考,具体如下:

1.

创建数据表

CREATE

TABLE

ccs_image

(

id

int(4)

unsigned

NOT

NULL

auto_increment,

description

varchar(250)

default

NULL,

bin_data

longblob,

filename

varchar(50)

default

NULL,

filesize

varchar(50)

default

NULL,

filetype

varchar(50)

default

NULL,

PRIMARY

KEY

(id)

)engine=myisam

DEFAULT

charset=utf8

2.

用于上传图片到服务器的页面

upimage.html

<!doctype

html>

<html

lang="en">

<head>

<meta

charset="UTF-8">

<meta

name="viewport"

content="width=device-width,

user-scalable=no,

initial-scale=1.0,

maximum-scale=1.0,

minimum-scale=1.0">

<meta

http-equiv="X-UA-Compatible"

content="ie=edge">

<style

type="text/css">

*{margin:

1%}

</style>

<title>Document</title>

</head>

<body>

<form

method="post"

action="upimage.php"

enctype="multipart/form-data">

描述:

<input

type="text"

name="form_description"

size="40">

<input

type="hidden"

name="MAX_FILE_SIZE"

value="1000000">

<br>

上传文件到数据库:

<input

type="file"

name="form_data"

size="40"><br>

<input

type="submit"

name="submit"

value="submit">

</form>

</body>

</html>

3.

处理图片上传的php

upimage.php

<?php

if

(isset($_POST['submit']))

{

$form_description

=

$_POST['form_description'];

$form_data_name

=

$_FILES['form_data']['name'];

$form_data_size

=

$_FILES['form_data']['size'];

$form_data_type

=

$_FILES['form_data']['type'];

$form_data

=

$_FILES['form_data']['tmp_name'];

$dsn

=

'mysql:dbname=test;host=localhost';

$pdo

=

new

PDO($dsn,

'root',

'root');

$data

=

addslashes(fread(fopen($form_data,

"r"),

filesize($form_data)));

//echo

"mysqlPicture=".$data;

$result

=

$pdo->query("INSERT

INTO

ccs_image

(description,bin_data,filename,filesize,filetype)

VALUES

('$form_description','$data','$form_data_name','$form_data_size','$form_data_type')");

if

($result)

{

echo

"图片已存储到数据库";

}

else

{

echo

"请求失败,请重试";

注:图片是以二进制blob形式存进数据库的,像这样

4.

显示图片的php

getimage.php

<?php

$id

=2;//

$_GET['id'];

为简洁,直接将id写上了,正常应该是通过用户填入的id获取的

$dsn='mysql:dbname=test;host=localhost';

$pdo=new

PDO($dsn,'root','root');

$query

=

"select

bin_data,filetype

from

ccs_image

where

id=2";

$result

=

$pdo->query($query);

$result=$result->fetchAll(2);

//

var_dump($result);

$data

=

$result[0]['bin_data'];

$type

=

$result[0]['filetype'];

Header(

"Content-type:

$type");

echo

$data;

到浏览器查看已经上传的图片,看是否可以显示

是没有问题的,证明图片已经以二进制的形式存储到数据库了

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php+mysql数据库操作入门教程》、《php+mysqli数据库程序设计技巧总结》、《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

您可能感兴趣的文章:php实现上传图片保存到数据库的方法php上传图片存入数据库示例分享php上传图片到指定位置路径保存到数据库的具体实现php中如何将图片储存在数据库里php下将图片以二进制存入mysql数据库中并显示的实现代码php

从数据库提取二进制图片的处理代码php将图片保存入mysql数据库失败的解决方法php将图片文件转换成二进制输出的方法php图片的二进制转换实现方法

PHP等比例压缩图片的实例代码

具体代码如下所示:

/**

*

desription

压缩图片

*

@param

sting

$imgsrc

图片路径

*

@param

string

$imgdst

压缩后保存路径

*/

public

function

compressedImage($imgsrc,

$imgdst)

{

list($width,

$height,

$type)

=

getimagesize($imgsrc);

$new_width

=

$width;//压缩后的图片宽

$new_height

=

$height;//压缩后的图片高

if($width

>=

600){

$per

=

600

/

$width;//计算比例

$new_width

=

$width

*

$per;

$new_height

=

$height

*

$per;

}

switch

($type)

{

case

1:

$giftype

=

check_gifcartoon($imgsrc);

if

($giftype)

{

header('Content-Type:image/gif');

$image_wp

=

imagecreatetruecolor($new_width,

$new_height);

$image

=

imagecreatefromgif($imgsrc);

imagecopyresampled($image_wp,

$image,

0,

0,

0,

0,

$new_width,

$new_height,

$width,

$height);

//90代表的是质量、压缩图片容量大小

imagejpeg($image_wp,

$imgdst,

90);

imagedestroy($image_wp);

imagedestroy($image);

}

break;

case

2:

header('Content-Type:image/jpeg');

$image_wp

=

imagecreatetruecolor($new_width,

$new_height);

$image

=

imagecreatefromjpeg($imgsrc);

imagecopyresampled($image_wp,

$image,

0,

0,

0,

0,

$new_width,

$new_height,

$width,

$height);

//90代表的是质量、压缩图片容量大小

imagejpeg($image_wp,

$imgdst,

90);

imagedestroy($image_wp);

imagedestroy($image);

break;

case

3:

header('Content-Type:image/png');

$image_wp

=

imagecreatetruecolor($new_width,

$new_height);

$image

=

imagecreatefrompng($imgsrc);

imagecopyresampled($image_wp,

$image,

0,

0,

0,

0,

$new_width,

$new_height,

$width,

$height);

//90代表的是质量、压缩图片容量大小

imagejpeg($image_wp,

$imgdst,

90);

imagedestroy($image_wp);

imagedestroy($image);

break;

}

}

总结

以上所述是小编给大家介绍的PHP等比例压缩图片的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

您可能感兴趣的文章:php中10个不同等级压缩优化图片操作示例PHP

实现等比压缩图片尺寸和大小实例代码php

gd等比例缩放压缩图片函数基于PHP实现等比压缩图片大小php上传图片并压缩的实现方法PHP实现图片上传并压缩PHP实现图片压缩的两则实例php使用imagick模块实现图片缩放、裁剪、压缩示例

PHP中图像处理怎么写一个折线统计图

在PHP中,有一些简单的图像函数是可以直接使用的,但大多数要处理的图像,都需要在编译PHP时加上GD库。除了安装GD库之外,在PHP中还可能需要其他的库,这可以根据需要支持哪些图像格式而定。GD库可以网上免费下载,不同的GD版本支持的图像格式不完全一样,最新的GD库版本支持GIF、JPEG、PNG、WBMP、XBM等格式的图像文件,此外还支持一些如FreeType、Type 1等字体库。通过GD库中的函数可以完成各种点、线、几何图形、文本及颜色的操作和处理,也可以创建或读取多种格式的图像文件。

在PHP中,通过GD库处理图像的操作,都是先在内存中处理,操作完成以后再以文件流的方式,输出到浏览器或保存在服务器的磁盘中。创建一个图像应该完成如下所示的4个基本步骤。

(1)创建画布:所有的绘图设计都需要在一个背景图片上完成,而画布实际上就是在内存中开辟的一块临时区域,用于存储图像的信息。以后的图像操作都将基于这个背景画布,该画布的管理就类似于我们在画画时使用的画布。

(2)绘制图像:画布创建完成以后,就可以通过这个画布资源,使用各种画像函数设置图像的颜色、填充画布、画点、线段、各种几何图形,以及向图像中添加文本等。

(3)输出图像:完成整个图像的绘制以后,需要将图像以某种格式保存到服务器指定的文件中,或将图像直接输出到浏览器上显示给用户。但在图像输出之前,一定要使用header()函数发送Content-type通知浏览器,这次发送的是图片不是文本。

(4)释放资源:图像被输出以后,画布中的内容也不再有用。出于节约系统资源的考虑,需要及时清除画布占用的所有内存资源。

php中用GD绘制折线图,代码如下:

Class Chart{

private $image; // 定义图像

private $title; // 定义标题

private $ydata; // 定义Y轴数据

private $xdata; // 定义X轴数据

private $seriesName; // 定义每个系列数据的名称

private $color; // 定义条形图颜色

private $bgcolor; // 定义图片背景颜色

private $width; // 定义图片的宽

private $height; // 定义图片的长

/*

* 构造函数

* String title 图片标题

* Array xdata 索引数组,X轴数据

* Array ydata 索引数组,数字数组,Y轴数据

* Array series_name 索引数组,数据系列名称

*/

function __construct($title,$xdata,$ydata,$seriesName) {

$this->title = $title;

$this->xdata = $xdata;

$this->ydata = $ydata;

$this->seriesName = $seriesName;

$this->color = array('#DC', '#B', '#EDB', '#DDDF', '#CBE', '#E', '#FF', '#FFF', '#AFC');

}

/*

* 公有方法,设置条形图的颜色

* Array color 颜色数组,元素取值为'#DC'这种形式

*/

function setBarColor($color){

$this->color = $color;

}

/*

* 绘制折线图

*/

public function paintLineChart() {

$ydataNum = $this->arrayNum($this->ydata); // 取得数据分组的个数

$max = $this->arrayMax($this->ydata); // 取得所有呈现数据的最大值

$max = ($max > )? $max : ;

$multi = $max/; // 如果最大数据是大于的则进行缩小处理

$barHeightMulti = .; // 条形高缩放的比例

$lineWidth = ;

$chartLeft = (+strlen($max))*; // 设置图片左边的margin

$lineY = ; // 初始化条形图的Y的坐标

// 设置图片的宽、高

//$this->width = $lineWidth*count($this->xdata) + $chartLeft - $lineWidth/.;

$margin = ; // 小矩形描述右边margin

$recWidth = ; // 小矩形的宽

$recHeight = ; // 小矩形的高

$space = ; // 小矩形与条形图的间距

$tmpWidth = ;

// 设置图片的宽、高

$lineChartWidth = $lineWidth*count($this->xdata) + $chartLeft - $lineWidth/. ;

// 两个系列数据以上的加上小矩形的宽

if($ydataNum > ) {

$tmpWidth = $this->arrayLengthMax($this->seriesName)**/ + $space + $recWidth + + $margin;

}

$this->width = $lineChartWidth + $tmpWidth;

$this->height = ;

$this->image = imagecreatetruecolor($this->width ,$this->height); // 准备画布

$this->bgcolor = imagecolorallocate($this->image,,,); // 图片的背景颜色

// 设置条形图的颜色

$color = array();

foreach($this->color as $col) {

$col = substr($col,,strlen($col)-);

$red = hexdec(substr($col,,));

$green = hexdec(substr($col,,));

$blue = hexdec(substr($col,,));

$color[] = imagecolorallocate($this->image ,$red, $green, $blue);

}

// 设置线段的颜色、字体的颜色、字体的路径

$lineColor = imagecolorallocate($this->image ,xcc,xcc,xcc);

$fontColor = imagecolorallocate($this->image, x,xf,xf);

$fontPath = 'font/simsun.ttc';

imagefill($this->image,,,$this->bgcolor); // 绘画背景

// 绘画图的分短线与左右边线

for($i = ; $i < ; $i++ ) {

imageline($this->image,$chartLeft-,$lineY-$barHeightMulti*$max//$multi*$i,$lineChartWidth,$lineY-$barHeightMulti*$max//$multi*$i,$lineColor);

imagestring($this->image,,,$lineY-$barHeightMulti*$max//$multi*$i-,floor($max/*$i),$fontColor);

}

imageline($this->image,$chartLeft-,,$chartLeft-,$lineY,$lineColor);

imageline($this->image,$lineChartWidth-,,$lineChartWidth-,$lineY,$lineColor);

$style = array($lineColor,$lineColor,$lineColor,$lineColor,$lineColor,$this->bgcolor,$this->bgcolor,$this->bgcolor,$this->bgcolor,$this->bgcolor);

imagesetstyle($this->image,$style);

// 绘制折线图的分隔线(虚线)

foreach($this->xdata as $key => $val) {

$lineX = $chartLeft + + $lineWidth*$key;

imageline($this->image,$lineX,,$lineX,$lineY,IMG_COLOR_STYLED);

}

// 绘画图的折线

foreach($this->ydata as $key => $val) {

if($ydataNum == ) {

// 一个系列数据时

if($key == count($this->ydata) - ) break;

$lineX = $chartLeft + + $lineWidth*$key;

$lineY = $lineY-$barHeightMulti*($this->ydata[$key+])/$multi;

// 画折线

if($key == count($this->ydata) - ) {

imagefilledellipse($this->image,$lineX+$lineWidth,$lineY,,,$color[]);

}

imageline($this->image,$lineX,$lineY-$barHeightMulti*$val/$multi,$lineX+$lineWidth,$lineY,$color[]);

imagefilledellipse($this->image,$lineX,$lineY-$barHeightMulti*$val/$multi,,,$color[]);

}elseif($ydataNum > ) {

// 多个系列的数据时

foreach($val as $ckey => $cval) {

if($ckey == count($val) - ) break;

$lineX = $chartLeft + + $lineWidth*$ckey;

$lineY = $lineY-$barHeightMulti*($val[$ckey+])/$multi;

// 画折线

if($ckey == count($val) - ) {

imagefilledellipse($this->image,$lineX+$lineWidth,$lineY,,,$color[$key%count($this->color)]);

}

imageline($this->image,$lineX,$lineY-$barHeightMulti*$cval/$multi,$lineX+$lineWidth,$lineY,$color[$key%count($this->color)]);

imagefilledellipse($this->image,$lineX,$lineY-$barHeightMulti*$cval/$multi,,,$color[$key%count($this->color)]);

}

}

}

// 绘画条形图的x坐标的值

foreach($this->xdata as $key => $val) {

$lineX = $chartLeft + $lineWidth*$key + $lineWidth/ - ;

imagettftext($this->image,,-,$lineX,$lineY+,$fontColor,$fontPath,$this->xdata[$key]);

}

// 两个系列数据以上时绘制小矩形及之后文字说明

if($ydataNum > ) {

$x = $lineChartWidth + $space;

$y = ;

foreach($this->seriesName as $key => $val) {

imagefilledrectangle($this->image,$x,$y,$x+$recWidth,$y+$recHeight,$color[$key%count($this->color)]);

imagettftext($this->image,,,$x+$recWidth+,$y+$recHeight-,$fontColor,$fontPath,$this->seriesName[$key]);

$y += $recHeight + ;

}

}

// 绘画标题

$titleStart = ($this->width - .*strlen($this->title))/;

imagettftext($this->image,,,$titleStart,,$fontColor,$fontPath,$this->title);

// 输出图片

header("Content-Type:image/png");

imagepng ( $this->image );

}

/*

* 私有方法,当数组为二元数组时,统计数组的长度

* Array arr 要做统计的数组

*/

private function arrayNum($arr) {

$num = ;

if(is_array($arr)) {

$num++;

for($i = ; $i < count($arr); $i++){

if(is_array($arr[$i])) {

$num = count($arr);

break;

}

}

}

return $num;

}

/*

* 私有方法,计算数组的深度

* Array arr 数组

*/

private function arrayDepth($arr) {

$num = ;

if(is_array($arr)) {

$num++;

for($i = ; $i < count($arr); $i++){

if(is_array($arr[$i])) {

$num += $this->arrayDepth($arr[$i]);

break;

}

}

}

return $num;

}

/*

* 私有方法,找到一组中的最大值

* Array arr 数字数组

*/

private function arrayMax($arr) {

$depth = $this->arrayDepth($arr);

$max = ;

if($depth == ) {

rsort($arr);

$max = $arr[];

}elseif($depth > ) {

foreach($arr as $val) {

if(is_array($val)) {

if($this->arrayMax($val) > $max) {

$max = $this->arrayMax($val);

}

}else{

if($val > $max){

$max = $val;

}

}

}

}

return $max;

}

/*

* 私有方法,求数组的平均值

* Array arr 数字数组

*/

function arrayAver($arr) {

$aver = array();

foreach($arr as $val) {

if(is_array($val)) {

$aver = array_merge($aver,$val);

}else{

$aver[] = $val;

}

}

return array_sum($aver)/count($aver);

}

/*

* 私有方法,求数组中元素长度最大的值

* Array arr 字符串数组,必须是汉字

*/

private function arrayLengthMax($arr) {

$length = ;

foreach($arr as $val) {

$length = strlen($val) > $length ? strlen($val) : $length;

}

return $length/;

}

// 析构函数

function __destruct(){

imagedestroy($this->image);

}

}

测试代码如下:

$xdata = array('测试一','测试二','测试三','测试四','测试五','测试六','测试七','测试八','测试九');

$ydata = array(array(,,,,,,,,),array(,,,,,,,,));

$color = array();

$seriesName = array("七月","八月");

$title = "测试数据";

$Img = new Chart($title,$xdata,$ydata,$seriesName);

$Img->paintLineChart();

效果图如下:

到此代码结束。

下面给大家介绍php中GD库的一些简单使用

今天了解了一些GD库的简单使用,现在稍微做一下总结!

GD库是什么?,graphic device,图像工具库,gd库是php处理图形的扩展库,gd库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片。 在网站上 GD库通常用来生成缩略图或者用来对图片加水印或者对网站数据生成报表。

php并不局限于输出HTML文本。php通过使用GD扩展库还能用来动态输出图像,例如文字按钮、验证码、数据统计图等。哈可以轻松地编辑图像,力图处理缩略图和为图片添加水印等,具有强大的图像处理能力。

首先我们来说下GD库,绘制个简单图形的一些步骤:

1、首先是创建画布,此处我们利用imagecreatetruecolor函数,也可以利用imagecreate,区别在于前者创建了一个真彩图像,后者创建了一个基于调色板的图像

$img=imagecreatetruecolor(100,100),其中有两个参数分别对应,我们创建的图像的宽和高

2、设置一些必要的"染料盒"

其实就是定义一些之后会用到的填充颜色,此处我们统一定义在这个位置,此处我们利用imagecolorallocate函数

$white=imagecolorallocate($img,0xFF,0xFF,0xFF)或者可以使用RGB的颜色命名方式 如$white=imagecolorallocate($img,255,255,255);

$gray = imagecolorallocate($img, 0xC0, 0xC0, 0xC0);

$darkgray = imagecolorallocate($img, 0x90, 0x90, 0x90);

$navy = imagecolorallocate($img, 0x00, 0x00, 0x80);

$darknavy = imagecolorallocate($img, 0x00, 0x00, 0x50);

$red = imagecolorallocate($img, 0xFF, 0x00, 0x00);

$darkred = imagecolorallocate($img, 0x90, 0x00, 0x00);

$black=imagecolorallocate($img,0x00,0x00,0x00);

此处我们定义多一些所需要的颜色

3、填充区域颜色,可以简单的理解为填充图片的背景颜色,利用imagefill函数

imagefill($img,0,0,$white),此处的0 0表示从坐标x y处开始填充背景色

4、绘制图形,例如绘制饼状图,所需要的是imagefilledarc函数

imagefilledarc()的参数相对来说较多,形如imagefilledarc($img,50,$i,100,50,0,45,$red,IMG_ARC_PIE);

其中分别表示以red颜色字img图像上绘制一个以50,$i为起点,以0 45角度这个范围内绘制弧线

5、期间我们还可以添加一些说明问题,比如水平的添加一个字符串,利用 imagestring($img,1,20,40,"hello,world!",$red),表示在img图片中以20 40为坐标,写上一个红色的hello,world!字样

6、就是讲图像输出

首先要告之浏览器要以何种图片格式输出,例如以png输出,则使用header("Content-type:image/png");

其次 将图片输出到浏览器中,imagepng($img);

最后,销毁图片,即释放该图片存储所占用的内存 imagedestroy(img);,

关于php图像入门实例的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。

查看更多关于php图像入门实例 php图像入门实例图的详细内容...

声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did207369
更新时间:2023-05-03   阅读:15次

上一篇: php敏感词屏蔽库 php屏蔽警告

下一篇:php函数每日必备 php函数的定义和调用

最新资料更新

  • 1.php支付源码 php支付平台
  • 2.免费php空间shery 免费PHP空间 免备案 V52版本
  • 3.修改php网页链接 怎么修改php网页
  • 4.韩顺平php视频教程下载 韩顺平oracle视频
  • 5.php的项目开发 php项目开发案例整合
  • 6.php数组键名排序 php数组值排序
  • 7.php开发宝典 php7开发宝典pdf下载
  • 8.php显示字段内容 php限制显示字数
  • 9.php项目基本流程 php项目如何运行
  • 10.php代码修改按钮大小 php内容修改
  • 11.包含php-vcmd的词条
  • 12.phpgetrows的简单介绍
  • 13.php短信android Php短信对接视频
  • 14.php文章发布系统 php发布网站
  • 15.php体彩投注 体彩官方投注
  • 16.php上传源码教程 php上传下载源码
  • 17.phpurl链接解析 php解析url
  • 18.php7性能tu Php性能
  • 19.输出jsonphp代码 js 输出json
  • 20.学php学什么专业 学php可以干什么工作

CopyRight:2016-2025好得很程序员自学网 备案ICP:湘ICP备09009000号-16 http://www.haodehen.cn
本站资讯不构成任何建议,仅限于个人分享,参考须谨慎!
本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。

网站内容来源于网络分享,如有侵权发邮箱到:kenbest@126.com,收到邮件我们会即时下线处理。
网站框架支持:HDHCMS   51LA统计 百度统计
Copyright © 2018-2025 「好得很程序员自学网」
[ SiteMap ]