zoukankan      html  css  js  c++  java
  • php 图片类

    需开启gd 

    index.php

     1 <?php 
     2 include_once('cutPic.class.php');
     3 $i = new cutPic("1.jpg");
     4 
     5 $i->cutOutsidePic("cut1.jpg",800,600,1);
     6 $i->cutOutsidePic("cut2.jpg",800,600,2);
     7 $i->cutOutsidePic("cut3.jpg",800,600,3);
     8 
     9 $i->cutOutsidePic("cut4.jpg",800,600,4);
    10 $i->cutOutsidePic("cut5.jpg",800,600,5);
    11 $i->cutOutsidePic("cut6.jpg",800,600,6);
    12 
    13 $i->cutOutsidePic("cut7.jpg",800,600,7);
    14 $i->cutOutsidePic("cut8.jpg",800,600,8);
    15 $i->cutOutsidePic("cut9.jpg",800,600,9);
    16 
    17 //$i->cutInsidePic("cut1.jpg",490,304,1);
    18 //$i->cutInsidePic("cut2.jpg",490,304,2);
    19 //$i->cutInsidePic("cut3.jpg",490,304,3);
    20 //
    21 //$i->cutInsidePic("cut4.jpg",490,304,4);
    22 //$i->cutInsidePic("cut5.jpg",490,304,5);
    23 //$i->cutInsidePic("cut6.jpg",490,304,6);
    24 //
    25 //$i->cutInsidePic("cut7.jpg",490,304,7);
    26 //$i->cutInsidePic("cut8.jpg",490,304,8);
    27 //$i->cutInsidePic("cut9.jpg",490,304,9);
    28 
    29 
    30 //$i->pastePic("1.png",1);
    31 //$i->pastePic("1.png",2);
    32 //$i->pastePic("1.png",3);
    33 //
    34 //$i->pastePic("1.png",4);
    35 //$i->pastePic("1.png",5);
    36 //$i->pastePic("1.png",6);
    37 //
    38 //$i->pastePic("2.png",7);
    39 //$i->pastePic("2.png",8);
    40 //$i->pastePic("2.png",9);
    41 
    42 //$i->scalePic("800.jpg", 800, 600);
    43 
    44 ///////////////////////////////////////
    45 //$i->cutInsidePic("1024.jpg",1024,768,5);
    46 //$i = new cutPic("1024.jpg");
    47 //$i->pastePic("1.png",1);
    48 //$i->pastePic("2.png",9);
    49 
    50 ?>
    51 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    52 <html xmlns="http://www.w3.org/1999/xhtml">
    53 <head>
    54 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    55 <title></title>
    56 </head>
    57 
    58 <body>
    59 </body>
    60 </html>

    Pic.class.php

     1 <?php
     2 
     3 /***************************
     4 图片操作类 by:Lucky (utf8)
     5 Pic.class.php
     6 
     7 2011-4-23
     8 ***************************/
     9 
    10 class Pic{
    11 
    12   public $fileName;    //源图片
    13   public $source;    //源图片资源
    14   public $width;    //源图片——宽度
    15   public $height;    //源图片——高度
    16   public $type;    //源图片——类型
    17 
    18   function __construct($fileName){
    19     list($this->width, $this->height, $this->type)    = getimagesize($fileName);
    20     $this->source    = $this->createSource($fileName, $this->type);
    21     $this->fileName     = $fileName;
    22   }
    23 
    24   function imagePic($thumb, $target, $t_type){    //生成图片 资源,目标地址,类型【1,2,3,4】
    25     switch($t_type){
    26       case 1:
    27         imagegif($thumb, $target, 100);
    28         break;
    29       case 2:
    30         imagejpeg($thumb, $target, 100);
    31         break;
    32       case 3:
    33         imagepng($thumb, $target, 100);
    34         break;
    35       //     case 4:
    36         //     imagebmp($thumb, $target, 100);
    37         //     break;
    38       default:
    39       $this->errorfun("生成图片失败");
    40     }    
    41   }
    42 
    43   function createSource($fileName, $f_type){    //由图像建立资源 源地址,类型【1,2,3,4】
    44     switch($f_type){
    45       case 1:
    46         $source = imagecreatefromgif($fileName);
    47         break;
    48       case 2:
    49         $source = imagecreatefromjpeg($fileName);
    50         break;
    51       case 3:
    52         $source = imagecreatefrompng($fileName);
    53         break;
    54       case 4:
    55         $source = imagecreatefromwbmp($fileName);
    56         break;
    57       default:
    58       $this->errorfun("建立图片资源失败");
    59     }
    60     return $source;
    61   }
    62 
    63   function createThumb($width, $height){     //建立空白图像资源 宽,高
    64     $thumb=imagecreatetruecolor ($width, $height); //建立图像
    65     imagefill($thumb, 0, 0, imagecolorallocate($thumb, 255, 255, 255));    //imagefill填充背景颜色//imagecolorallocate设置背景颜色 默认为黑色 此处设置为白色    
    66     return $thumb;
    67   }
    68 
    69   function errorfun($e='未知错误!'){
    70     $msg='<script language="javascript" type="text/javascript">';
    71     $msg.='alert("'.$e.'");';
    72     //     $msg.='history.back();';
    73     $msg.='</script>';
    74     echo $msg;
    75     exit;
    76   }
    77 
    78   function __destructor(){
    79     $this->fileName     = '';
    80     $this->source     = '';
    81     $this->width     = '';
    82     $this->height     = '';
    83     $this->type     = '';
    84   }
    85 
    86 }
    87 ?>

    cutPic.class.php

      1 <?php
      2 
      3 /***************************
      4 图片操作类 by:Lucky (utf8)
      5 pastePic.class.php
      6 
      7 2011-4-23
      8 ***************************/
      9 
     10 include_once('Pic.class.php');
     11 
     12 class cutPic extends Pic{
     13 
     14   public $thumb;     //临时资源
     15 
     16   function cutInsidePic($target, $t_width, $t_height, $place='1'){    //截取图片内部 新图片资源
     17     // 1 2 3
     18     // 4 5 6
     19     // 7 8 9 
     20     $this->thumb    = $this->createThumb($t_width, $t_height);
     21     switch($place){
     22       case '1':    //上左
     23         imagecopy($this->thumb,$this->source,0,0,0,0,$this->width,$this->height);
     24         break;
     25       case '2':    //上中
     26         imagecopy($this->thumb,$this->source,0,0,($this->width-$t_width)/2,0,$this->width,$this->height);
     27         break;
     28       case '3':    //上右
     29         imagecopy($this->thumb,$this->source,0,0,($this->width-$t_width),0,$this->width,$this->height);
     30         break;
     31       case '4':    //中左
     32         imagecopy($this->thumb,$this->source,0,($t_height-$this->height)/2,0,0,$this->width,$this->height);
     33         break;
     34       case '5':    //中中
     35         imagecopy($this->thumb,$this->source,0,($t_height-$this->height)/2,($this->width-$t_width)/2,0,$this->width,$this->height);
     36         break;
     37       case '6':    //中右
     38         imagecopy($this->thumb,$this->source,0,($t_height-$this->height)/2,($this->width-$t_width),0,$this->width,$this->height);
     39         break;
     40       case '7':    //下左
     41         imagecopy($this->thumb,$this->source,0,($t_height-$this->height),0,0,$this->width,$this->height);
     42         break;
     43       case '8':    //下中
     44         imagecopy($this->thumb,$this->source,0,($t_height-$this->height),($this->width-$t_width)/2,0,$this->width,$this->height);
     45         break;
     46       case '9':    //下右
     47         imagecopy($this->thumb,$this->source,0,($t_height-$this->height),($this->width-$t_width),0,$this->width,$this->height);
     48         break;
     49       default:
     50       $this->errorfun("截取图片内部失败");
     51     }
     52     $this->imagePic($this->thumb, $target, $this->type);
     53   }
     54 
     55   function cutOutsidePic($target, $t_width, $t_height, $place='1'){    //把图片放置新空白图片 目标图, 目标图的宽, 目标图的高
     56     // 1 2 3
     57     // 4 5 6
     58     // 7 8 9 
     59     $this->thumb    = $this->createThumb($t_width, $t_height);
     60     switch($place){
     61       case '1':    //上左
     62         imagecopy($this->thumb,$this->source,0,0,0,0,$this->width,$this->height);
     63         break;
     64       case '2':    //上中
     65         imagecopy($this->thumb,$this->source,($t_width-$this->width)/2,0,0,0,$this->width,$this->height);
     66         break;
     67       case '3':    //上右
     68         imagecopy($this->thumb,$this->source,($t_width-$this->width),0,0,0,$this->width,$this->height);
     69         break;
     70       case '4':    //中左
     71         imagecopy($this->thumb,$this->source,0,($t_height-$this->height)/2,0,0,$this->width,$this->height);
     72         break;
     73       case '5':    //中中
     74         imagecopy($this->thumb,$this->source,($t_width-$this->width)/2,($t_height-$this->height)/2,0,0,$this->width,$this->height);
     75         break;
     76       case '6':    //中右
     77         imagecopy($this->thumb,$this->source,($t_width-$this->width),($t_height-$this->height)/2,0,0,$this->width,$this->height);
     78         break;
     79       case '7':    //下左
     80         imagecopy($this->thumb,$this->source,0,($t_height-$this->height),0,0,$this->width,$this->height);
     81         break;
     82       case '8':    //下中
     83         imagecopy($this->thumb,$this->source,($t_width-$this->width)/2,($t_height-$this->height),0,0,$this->width,$this->height);
     84         break;
     85       case '9':    //下右
     86         imagecopy($this->thumb,$this->source,($t_width-$this->width),($t_height-$this->height),0,0,$this->width,$this->height);
     87         break;
     88       default:
     89       $this->errorfun("把图片放置新空白图片失败");
     90     }
     91     $this->imagePic($this->thumb, $target, $this->type);
     92   }
     93 
     94   function pastePic($water, $place='1'){    //把图片放置新图上
     95     // 1 2 3
     96     // 4 5 6
     97     // 7 8 9 
     98     list($t_width, $t_height, $t_type)    = getimagesize($water);
     99     $this->thumb    = $this->createSource($water, $t_type);
    100     switch($place){
    101       case '1':    //上左
    102         imagecopy($this->source,$this->thumb,0,0,0,0,$t_width,$t_height);
    103         break;
    104       case '2':    //上中
    105         imagecopy($this->source,$this->thumb,($this->width-$t_width)/2,0,0,0,$t_width,$t_height);
    106         break;
    107       case '3':    //上右
    108         imagecopy($this->source,$this->thumb,($this->width-$t_width),0,0,0,$t_width,$t_height);
    109         break;
    110       case '4':    //中左
    111         imagecopy($this->source,$this->thumb,0,($this->height-$t_height)/2,0,0,$t_width,$t_height);
    112         break;
    113       case '5':    //中中
    114         imagecopy($this->source,$this->thumb,($this->width-$t_width)/2,($this->height-$t_height)/2,0,0,$t_width,$t_height);
    115         break;
    116       case '6':    //中右
    117         imagecopy($this->source,$this->thumb,($this->width-$t_width),($this->height-$t_height)/2,0,0,$t_width,$t_height);
    118         break;
    119       case '7':    //下左
    120         imagecopy($this->source,$this->thumb,0,($this->height-$t_height),0,0,$t_width,$t_height);
    121         break;
    122       case '8':    //下中
    123         imagecopy($this->source,$this->thumb,($this->width-$t_width)/2,($this->height-$t_height),0,0,$t_width,$t_height);
    124         break;
    125       case '9':    //下右
    126         imagecopy($this->source,$this->thumb,($this->width-$t_width),($this->height-$t_height),0,0,$t_width,$t_height);
    127         break;
    128       default:
    129       $this->errorfun("合并图片失败");
    130     }
    131     $this->imagePic($this->source, $this->fileName, $this->type);
    132   }
    133 
    134   function scalePic($target, $t_width, $t_height){
    135 
    136     $bili = $this->width/$this->height;
    137     $t_bili = $t_width/$t_height;
    138     $bgcolor = imagecolorallocate($this->thumb, 255, 255, 255);
    139     imagefill($this->thumb,0,0,$bgcolor);
    140 
    141     if($bili > $t_bili){
    142       $this->thumb=imagecreatetruecolor ($t_width,$t_width/$bili);
    143       imagecopyresampled($this->thumb,$this->source,0,0,0,0,$t_width,$t_width/$bili,$this->width,$this->height);
    144     }elseif($bili < $t_bili){
    145       $this->thumb=imagecreatetruecolor ($t_height*$bili,$t_height);
    146       imagecopyresampled($this->thumb,$this->source,0,0,0,0,$t_height*$bili,$t_height,$this->width,$this->height);
    147     }else{
    148       $this->thumb=imagecreatetruecolor ($t_width,$t_height);
    149       imagecopyresampled($this->thumb,$this->source,0,0,0,0,$t_width,$t_height,$this->width,$this->height);
    150     }
    151     $this->imagePic($this->thumb, $target, $this->type);
    152 
    153   }
    154 
    155   function __destructor(){
    156     $this->thumb     = '';
    157   }
    158 
    159 }
    160 ?>
  • 相关阅读:
    C单链表操作
    如何为linux系统设置全局的默认网络代理
    Linux下动态库使用小结
    图片替代鼠标光标
    axios+FormData文件上传
    vue之回车触发表单提交
    viewer 照片查看器
    contains 之 点击元素外位置隐藏元素
    vue-cli 3.0之跨域请求代理配置及axios路径配置
    css之单边阴影
  • 原文地址:https://www.cnblogs.com/zhusanjie/p/3287448.html
Copyright © 2011-2022 走看看