GdClass.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Administrator
  5. * Date: 2022-06-24
  6. * Time: 12:23
  7. */
  8. namespace app\model\image;
  9. use Intervention\Image\ImageManagerStatic as Image;
  10. /**
  11. * Gd 图片策略类(也就是默认)
  12. * Class ImagickClass
  13. * @package app\model\upload
  14. */
  15. class GdClass
  16. {
  17. /**
  18. * 获取图片实例
  19. * @param $path
  20. * @return mixed
  21. */
  22. public function open($path){
  23. $image = Image::make($path);
  24. return $image;
  25. }
  26. /**
  27. * 图片保存
  28. * @param $image
  29. * @param $new_file
  30. */
  31. public function save($image, $new_file, $compress){
  32. return $image->save($new_file, $compress);
  33. }
  34. public function getImageParam($image){
  35. $width = $image->width();//图片宽
  36. $height = $image->height();//图片高
  37. return [
  38. 'width' => $width,
  39. 'height' => $height
  40. ];
  41. }
  42. /**
  43. * 文字水印
  44. * @param $text
  45. * @param $x
  46. * @param $y
  47. * @param $size
  48. * @param $color
  49. * @param $align
  50. * @param $valign
  51. * @param $angle
  52. * @return mixed
  53. */
  54. public function textWater($image, $text, $x, $y, $size, $color, $align, $valign, $angle){
  55. // $x = $image->width()/2;
  56. // $y = $image->height()/2;
  57. $image->text($text, $x, $y, function($font) use ($size, $color, $align, $valign, $angle){
  58. // $font->file($this->config["water"]["watermark_text_file"]);//设置字体文件位置
  59. $font->file(PUBLIC_PATH.'static/font/Microsoft.ttf');
  60. $font->size($size);//设置字号大小
  61. $font->color($color);//设置字号颜色
  62. $font->align($align);//设置字号水平位置
  63. $font->valign($valign);//设置字号 垂直位置
  64. $font->angle($angle);//设置字号倾斜角度
  65. });
  66. return $image;
  67. }
  68. /**
  69. * 图片水印
  70. * @param $water_path
  71. * @param $water_position
  72. * @param $x
  73. * @param $y
  74. * @return mixed
  75. */
  76. public function imageWater($image, $water_path, $watermark_opacity, $water_rotate, $water_position, $x, $y){
  77. $watermark = Image::make($water_path)->opacity($watermark_opacity)->rotate($water_rotate);
  78. $image->insert($watermark, $water_position, $x, $y);
  79. return $image;
  80. }
  81. /**
  82. * 缩略图
  83. * @param $width
  84. * @param $height
  85. * @param $fit
  86. * @param $fill_color
  87. */
  88. public function thumb($image, $width, $height, $fit = 'center', $fill_color = 'ffffff'){
  89. if(!empty($fit)){
  90. $image = $image->fit($width, $height, function ($constraint) {
  91. // $constraint->aspectRatio();
  92. // $constraint->upsize();
  93. });
  94. }else{
  95. $image = $image->resize($width, $height, function ($constraint) {
  96. $constraint->aspectRatio();
  97. $constraint->upsize();
  98. });
  99. }
  100. return $image;
  101. }
  102. }