php课程 8-32 如何使用gd库进行图片裁剪和缩放

一、总结

一句话总结:图片缩放到图片裁剪就是改变原图截取的位置以及截取的宽高。

1、电商网站那么多的图片,如果全部加载卡得慢的很,所以他们是怎么解决这个问题的(从图片处理的角度回答)?

图片缩放,大图缩放成小图

2、gd库中图片缩放和图片裁剪的关系?

图片缩放包括图片裁剪
把原图的所有东西弄到新图里面叫图片缩放,弄一部分就叫图片裁剪。

图片缩放到图片裁剪就是改变原图截取的位置以及截取的宽高

 1 <?php
2 //图片缩放
3 $src_image=imagecreatefromjpeg('cs.jpg');
4 $dst_image=imagecreatetruecolor(200,200);
5 $dst_x=0;
6 $dst_y=0;
7 $src_x=0;
8 $src_y=0;
9 $dst_w=300;
10 $dst_h=200;
11 $src_w=1920;
12 $src_h=1200;
13
14 imagecopyresampled($dst_image,$src_image,$dst_x,$dst_y,$src_x,$src_y,$dst_w,$dst_h,$src_w,$src_h);
15
16 imagejpeg($dst_image,'t_cs.jpg');
17
18 ?>

3、gd库图片缩放和图片裁剪的函数是哪个?

14 imagecopyresampled($dst_image,$src_image,$dst_x,$dst_y,$src_x,$src_y,$dst_w,$dst_h,$src_w,$src_h);

4、gd库水印的函数是哪个?

12 imagecopy($dst_im,$src_im,$dst_x,$dst_y,$src_x,$src_y,$src_w,$src_h);

5、如何把图片放到画布中?

imagecreatefromjpeg('cs.jpg')
3 $src_image=imagecreatefromjpeg('cs.jpg');

6、如何创建一个新的画布?

imagecreatetruecolor
 4 $dst_image=imagecreatetruecolor(200,200);

7、如何获取图片的各种信息?

getimagesize函数
 4 function thumb($src_file,$dst_w,$dst_h){
5
6 $srcarr=getimagesize($src_file);
 

二、如何使用gd库进行图片裁剪和缩放

1、相关知识

图片缩放:
imagecopyresampled($dst_image,$src_image,$dst_x,$dst_y,$src_x,$src_y,$dst_w,$dst_h,$src_w,$src_h);

图片裁剪:
imagecopyresampled($dst_image,$src_image,$dst_x,$dst_y,$src_x,$src_y,$dst_w,$dst_h,$src_w,$src_h);o

图片水印:
imagecopy($dst_im,$src_im,$dst_x,$dst_y,$src_x,$src_y,$src_w,$src_h);

[图片缩放完整的实例]

2、代码

图片缩放

 <?php
//图片缩放
$src_image=imagecreatefromjpeg('cs.jpg');
$dst_image=imagecreatetruecolor(200,200);
$dst_x=0;
$dst_y=0;
$src_x=0;
$src_y=0;
$dst_w=300;
$dst_h=200;
$src_w=1920;
$src_h=1200; imagecopyresampled($dst_image,$src_image,$dst_x,$dst_y,$src_x,$src_y,$dst_w,$dst_h,$src_w,$src_h); imagejpeg($dst_image,'t_cs.jpg'); ?>

图片裁剪

 <?php
//图片缩放
$src_image=imagecreatefromjpeg('cs.jpg');
$dst_image=imagecreatetruecolor(200,200);
$dst_x=0;
$dst_y=0;
$src_x=0;
$src_y=0;
$dst_w=200;
$dst_h=200;
$src_w=1500;
$src_h=1200; imagecopyresampled($dst_image,$src_image,$dst_x,$dst_y,$src_x,$src_y,$dst_w,$dst_h,$src_w,$src_h); imagejpeg($dst_image,'t_cs.jpg'); ?>

图片水印

 <?php
//图片缩放
$src_im=imagecreatefromjpeg('logo.jpg');
$dst_im=imagecreatefromjpeg('cs.jpg');
$dst_x=0;
$dst_y=0;
$src_x=0;
$src_y=0;
$src_w=200;
$src_h=50; imagecopy($dst_im,$src_im,$dst_x,$dst_y,$src_x,$src_y,$src_w,$src_h); imagejpeg($dst_im,'w_cs.jpg');
?>

imagesx和imagesy获取图片宽高

 <?php
//图片缩放
$src_im=imagecreatefromjpeg('logo.jpg');
$dst_im=imagecreatefromjpeg('cs.jpg');
$dst_x=0;
$dst_y=0;
$src_x=0;
$src_y=0;
$src_w=imagesx($src_im);
$src_h=imagesy($src_im); imagecopy($dst_im,$src_im,$dst_x,$dst_y,$src_x,$src_y,$src_w,$src_h); imagejpeg($dst_im,'w_cs.jpg');
?>

图片缩放完整实例

 <?php
//图片缩放完整实例(包含等比例) function thumb($src_file,$dst_w,$dst_h){ $srcarr=getimagesize($src_file); //变量函数
switch($srcarr[2]){
case 1:
$imagecreatefrom="imagecreatefromgif";
$imageout="imagegif";
break; case 2:
$imagecreatefrom="imagecreatefromjpeg";
$imageout="imagejpeg";
break; case 3:
$imagecreatefrom="imagecreatefrompng";
$imageout="imagepng";
break;
} $src_image=$imagecreatefrom($src_file); //等比例计算真实目标资源的宽和高
$src_w=imagesx($src_image);
$src_h=imagesy($src_image); $scale=($src_w/$dst_w)>($src_h/$dst_h)?($src_w/$dst_w):($src_h/$dst_h); $dst_w=floor($src_w/$scale);
$dst_h=floor($src_h/$scale); $dst_image=imagecreatetruecolor($dst_w,$dst_h); $dst_x=0;
$dst_y=0;
$src_x=0;
$src_y=0; imagecopyresampled($dst_image,$src_image,$dst_x,$dst_y,$src_x,$src_y,$dst_w,$dst_h,$src_w,$src_h); $t_name='t_'.basename($src_file);
$t_dir=dirname($src_file);
$s_file=$t_dir.'/'.$t_name; $imageout($dst_image,$s_file);
} $src_file='imgs/cs.jpg'; thumb($src_file,200,200); ?>
 

php课程 8-32 如何使用gd库进行图片裁剪和缩放的更多相关文章

  1. php 简单的学习GD库绘制图片并传回给前端实现方式

    1.基本的GD库绘制图片汇总 2.后台实现小案例 <?php // $img = imagecreatetruecolor(200,40); // var_dump($img); // 利用GD ...

  2. php用GD库给图片添加水印

    php用GD库给图片添加文字水印,整个代码比较简单,DEMO如下: <?php /*打开图片*/ //1.配置图片路径 $src = "aeroplane.jpg"; //2 ...

  3. PHP面向对象——GD库实现图片水印和缩略图

    今天的实现目标就是使用GD库完成对图片加水印和图 片缩略图两个功能 动身前逻辑准备 属性: 路径 功能: 构造方法 生成水印的方法 获取 图片信息 获取位置信息(123 456 789) 创建图片资源 ...

  4. 【PHP】使用GD库实现 图像生成、缩放、logo水印和简单验证码

    gd库是php最常用的图片处理库之一(另外一个是imagemagick),可以生成图片.验证码.水印.缩略图等等.要使用gd库首先需要开启gd库扩展, windows系统下需要在php.ini中将ex ...

  5. php使用GD库实现图片水印和缩略图——封装成类

    学完了如何使用GD库来实现对图片的各种处理,那么我们可以发现,不管哪种方法,都有相似之处,如果我们把这些相似的地方和不相似的地方都封装成类,这样就可以提升代码的速度,而且节省了很多时间,废话不多说,来 ...

  6. php使用GD库实现图片水印和缩略图——生成图片缩略图

    今天呢,就来学习一下在php中使用PD库来实现对图片水印的文字水印方法,不需要PS哦! 首先,准备素材 (1)准备一张图片 (2)准备一张水印(最好是透明的,即背景是白色底) (3)准备一中字体(在电 ...

  7. php使用GD库实现图片水印和缩略图——给图片添加图片水印

    今天呢,就来学习一下在php中使用PD库来实现对图片水印的文字水印方法,不需要PS哦! 首先,准备素材 (1)准备一张图片 (2)准备一张水印(最好是透明的,即背景是白色底) (3)准备一中字体(在电 ...

  8. php使用GD库实现图片水印和缩略图——给图片添加文字水印

    今天呢,就来学习一下在php中使用PD库来实现对图片水印的文字水印方法,不需要PS哦! 首先,准备素材 (1)准备一张图片 (2)准备一张水印(最好是透明的,即背景是白色底) (3)准备一中字体(在电 ...

  9. PHP 使用gd库压缩图片并生成新图片返回全路径

    使用gd库前,先检查是否开启了gd库 phpinfo(); 如果在php配置信息里找到了gd库,那么就是开启了,没开启的自行百度如何开启php gd库 既然开启了gd库,那么直接再php里写入以下代码 ...

随机推荐

  1. 基于二叉树和双向链表实现限制长度的最优Huffman编码

    该代码採用二叉树结合双向链表实现了限制长度的最优Huffman编码,本文代码中的权重所有採用整数值表示.http://pan.baidu.com/s/1mgHn8lq 算法原理详见:A fast al ...

  2. ctags 寻找方法定义处

    ctags这个是vim的一个插件,它可以用来生成一个检索文件,里面保存有一些索引信息.例如,一些类跟方法.变量等的定义位置当我们对一个路径执行ctags -R的时候,就会自动生成一个ctags,然后我 ...

  3. Android图像处理之熔铸特效

    代码: package com.color; import android.content.Context; import android.graphics.Bitmap; import androi ...

  4. hbase xshell

    用Xshell登陆linux主机后,在hbase shell下死活不能使用backspace和delete删除误输的指令,只得不停退出,重登,仔细输..又错了,再退出,再登,仔细输...又错了...又 ...

  5. JeeSite信息化快速开发平台

     平台简介 JeeSite是基于多个优秀的开源项目,高度整合封装而成的高效,高性能,强安全性的开源Java EE快速开发平台. JeeSite是您快速完成项目的最佳基础平台解决方案,JeeSite是您 ...

  6. mysql允许外部连接设置

    错误信息: SQL Error (1130): Host ‘192.168.1.88’ is not allowed to connect to this MySQL server 说明所连接的用户帐 ...

  7. [Redux-Observable && Unit Testing] Use tests to verify updates to the Redux store (rxjs scheduler)

    In certain situations, you care more about the final state of the redux store than you do about the ...

  8. pat(A) 2-06. 数列求和(模拟摆竖式相加)

    1.链接:http://www.patest.cn/contests/ds/2-06 2.思路:模拟摆竖式相加,因为同样位置上的数字同样,那么同一位上的加法就能够用乘法来表示 3.代码: #inclu ...

  9. 随时查看源码的网站---http://www.sooset.com/

    由于工作需要经常要在Windows平台下参阅linux源码,以前都用http://lxr.linux.no/来浏览源码(如下图所示),最近发现sooset来浏览更方便,所以介绍给大家分享. 650) ...

  10. UML类图与类图中的关系

    以下内容摘自<Java与模式> 在类与类之间,会有连线指明它们之间的关系.类和类.类和接口.接口和接口之间可以建立以下几种关系:一般化关系.关联关系.聚合关系.合成关系和依赖关系,这几种关 ...