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

时间:2023-03-09 13:16:05
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、代码

图片缩放

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