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);
[图片缩放完整的实例]
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 ?>