微信扫一扫打赏支持

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

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、代码

图片缩放

 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  ?>

 

图片裁剪

 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=200;
10 $dst_h=200;
11 $src_w=1500;
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  ?>

 

图片水印

 1 <?php 
 2 //图片缩放
 3 $src_im=imagecreatefromjpeg('logo.jpg');
 4 $dst_im=imagecreatefromjpeg('cs.jpg');
 5 $dst_x=0;
 6 $dst_y=0;
 7 $src_x=0;
 8 $src_y=0;
 9 $src_w=200;
10 $src_h=50;
11 
12 imagecopy($dst_im,$src_im,$dst_x,$dst_y,$src_x,$src_y,$src_w,$src_h);
13 
14 imagejpeg($dst_im,'w_cs.jpg');
15  ?>

 

imagesx和imagesy获取图片宽高

 1 <?php 
 2 //图片缩放
 3 $src_im=imagecreatefromjpeg('logo.jpg');
 4 $dst_im=imagecreatefromjpeg('cs.jpg');
 5 $dst_x=0;
 6 $dst_y=0;
 7 $src_x=0;
 8 $src_y=0;
 9 $src_w=imagesx($src_im);
10 $src_h=imagesy($src_im);
11 
12 imagecopy($dst_im,$src_im,$dst_x,$dst_y,$src_x,$src_y,$src_w,$src_h);
13 
14 imagejpeg($dst_im,'w_cs.jpg');
15  ?>

 

图片缩放完整实例

 1 <?php 
 2 //图片缩放完整实例(包含等比例)
 3 
 4 function thumb($src_file,$dst_w,$dst_h){
 5 
 6     $srcarr=getimagesize($src_file);
 7 
 8     //变量函数
 9     switch($srcarr[2]){
10         case 1:
11             $imagecreatefrom="imagecreatefromgif";
12             $imageout="imagegif";
13             break;
14 
15         case 2:
16             $imagecreatefrom="imagecreatefromjpeg";
17             $imageout="imagejpeg";
18             break;
19 
20         case 3:
21             $imagecreatefrom="imagecreatefrompng";
22             $imageout="imagepng";
23             break;
24     }
25 
26     $src_image=$imagecreatefrom($src_file);
27 
28     //等比例计算真实目标资源的宽和高
29     $src_w=imagesx($src_image);
30     $src_h=imagesy($src_image);
31 
32     $scale=($src_w/$dst_w)>($src_h/$dst_h)?($src_w/$dst_w):($src_h/$dst_h);
33 
34     $dst_w=floor($src_w/$scale);
35     $dst_h=floor($src_h/$scale);
36 
37     $dst_image=imagecreatetruecolor($dst_w,$dst_h);
38 
39     $dst_x=0;
40     $dst_y=0;
41     $src_x=0;
42     $src_y=0;
43 
44 
45     imagecopyresampled($dst_image,$src_image,$dst_x,$dst_y,$src_x,$src_y,$dst_w,$dst_h,$src_w,$src_h);
46 
47     $t_name='t_'.basename($src_file);
48     $t_dir=dirname($src_file);
49     $s_file=$t_dir.'/'.$t_name;
50 
51     $imageout($dst_image,$s_file);
52 }
53 
54 $src_file='imgs/cs.jpg';
55 
56 thumb($src_file,200,200);
57 
58  ?>

 

 

 

 

 
posted @ 2018-07-11 10:18  范仁义  阅读(850)  评论(0编辑  收藏  举报