当前位置:Gxlcms > PHP教程 > 图片处理类(改进版)

图片处理类(改进版)

时间:2021-07-01 10:21:17 帮助过:13人阅读

  1. <!--?php
  2. #封装一个image类
  3. class Image{
  4. private static $info; #图片基本信息
  5. private static $image; #内存中的图片
  6. public function __construct($src){
  7. #判断文件
  8. if(!is_file($src)){
  9. return false;
  10. } #如果不是文件,直接返回
  11. //获取图片信息
  12. $info = getimagesize($src);
  13. self::$info=array(
  14. 'width'=-->$info[0],
  15. 'height'=>$info[1],
  16. 'type'=>image_type_to_extension($info[2],false),
  17. 'mime'=>$info['mime']
  18. );
  19. //获取图片信息
  20. $type=self::$info['type'];
  21. $fun ="imagecreatefrom{$type}";
  22. self::$image = $fun($src);
  23. }
  24. /**
  25. * @param int $width $height 应该在配置文件中声明使用,可取消参数
  26. * @return
  27. 缩略图 图片资源
  28. * 缩略图的形成与使用
  29. */
  30. public function thumb($width ,$height){
  31. //新建镇色彩图片
  32. $image_thumb =imagecreatetruecolor($width ,$height);
  33. #获取图片的宽高比
  34. $src_m = self::$info['width'] / self::$info['height']; #源文件空格比
  35. $dst_m = $width / $height;
  36. #缩略图宽高比
  37. #源文件图片是 N:1 型的 宽不变, 改变高
  38. if($src_m > $dst_m ){
  39. $cha_width = $width;
  40. $cha_height = ceil($width / $src_m) ;
  41. }else{
  42. #源文件图片是 1:N 型的 高不变,改变宽
  43. $cha_width = floor($height * $src_m) ;
  44. $cha_height = $height ;
  45. }
  46. #对缩略图的其实位置进行重置
  47. $dst_x = ($width - $cha_width) /2 ;
  48. $dst_y = ($height - $cha_height) /2 ;
  49. imagecopyresampled($image_thumb ,self::$image , $dst_x , $dst_y ,0 , 0, $cha_width , $cha_height ,self::$info['width'],self::$info['height']);
  50. #生成缩略图
  51. self::$image =$image_thumb;
  52. // #显示缩略图图片
  53. // self::show(self::$image);
  54. #保存缩略图
  55. self::save(self::getNewName());
  56. //销毁图片
  57. imagedestroy($this->image_thumb);
  58. #返回缩略图名字
  59. return self::getNewName();
  60. }
  61. #水印的生成坐标
  62. private static function setLocal($pos){
  63. #对 pos 参数进行判断 , 指定相应的水印生成坐标
  64. #水印图片在config 文件中记录 $conf['mark']
  65. switch ($pos) {
  66. case 1:
  67. $x = 0;
  68. $y = 0;
  69. break ;
  70. case 2:
  71. default:
  72. $x = self::$info['width']-50;
  73. $y = self::$info['height']-50; #不该是20 这个定制, 应该改成水印图片的宽高
  74. }
  75. return $local=array('x' => $x ,'y'=>$y);
  76. }
  77. #添加文字水印
  78. public function fontMark($content ,$font_url ,$size,$angle){
  79. #字体颜色
  80. $col = imagecolorallocatealpha(self::$image,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255),20);
  81. #获取水印
输出位置坐标 $local = self::setLocal(2); imagettftext(self::$image,$size,$angle,$local['x'],$local['y'],$col,$font_url,$content); #显示缩略图图片 self::show(self::$image); #保存文字水印 没有添加保存路径 self::save(self::getNewName()); #返回水印图片的名字 return self::getNewName(); } #添加图片水印 public function imageMark($url ,$alpha){ $info= getimagesize($url); #获取图片信息 $type=image_type_to_extension($info[2],false); $fun = "imagecreatefrom{$type}"; #获取水印输出位置坐标 $local = self::setLocal(2); $water = $fun($url); #水印图片 imagecopymerge(self::$image, $water, $local['x'], $local['y'],0 , 0,$info[0] , $info[1], 30); #销毁图片水印 imagedestroy($water); #显示缩略图图片 self::show(self::$image); #保存图片水印 没有添加保存路径 self::save(self::getNewName()); #返回水印图片的名字 return self::getNewName(); } #生成随机的 图片名字 /** * @return string 返回一个新的名字 * */ private static function getNewName(){ #获取一个时间 $str = time(); #获取随机字符串 $string = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOASDFGHJKZXCVBNM1234567890"; for($i=0 ; $i<6 ; $i++){ $str .= $string[mt_rand(0 , strlen($string)-1)]; } return $str.self::$info['type']; } #在浏览器中输出图片 private static function show(){ header("content-type:".self::$info['mime']); $funs ="image".self::$info['type']; $funs(self::$image); } #把图片保存到硬盘 private static function save($newname){ $funs="image".self::$info['type']; $funs(self::$image,$newname.".".self::$info['type']); #在此处加入配置文件的生成目录 } #销毁图片 public function __destruct(){ imagedestroy(self::$image); } }

以上就介绍了图片处理类 (改进版),包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

人气教程排行