zoukankan      html  css  js  c++  java
  • 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  ?>
     
  • 相关阅读:
    第三讲:增长全局观
    搭建安卓环境
    ~~
    天气阴
    天气晴
    Spark性能优化指南——高级篇
    Ceph Jewel 10.2.3 环境部署
    《你只是看起来很努力》--读书笔记
    博客园基础环境配置
    Spark 1.3.0 单机安装
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/9293096.html
Copyright © 2011-2022 走看看