Home >Backend Development >PHP Tutorial >php image processing method, php image processing class

php image processing method, php image processing class

WBOY
WBOYOriginal
2016-07-25 09:06:251137browse
A php I wrote before processes uploaded images online and can be cropped. Add a watermark image. When the watermark image exceeds the size of the target image, the watermark image can automatically adapt to the target image and shrink. The degree of merging of the watermark image with the background can be set. Source code: http://www.pooy.net/phpphp.html


  1. *exif_imagetype -- Determine the type of an image
  2. *Source code download: http://www.pooy.net/phpphp.html
  3. *Description: The function is to crop an image to any size Image, the image is not deformed
  4. * Parameter description: Enter the file name of the image to be processed, generate the save file name of the new image, generate the width of the new image, generate the height of the new image
  5. */
  6. // Obtain any size image, shortcomings Stretch, no deformation, no blank space
  7. function my_image_resize($src_file, $dst_file, $new_width, $new_height) {
  8. $new_width= intval($new_width);
  9. $new_height=intval($new_width);
  10. if ($new_width <1 || $new_height <1) {
  11. echo "params width or height error !";
  12. exit();
  13. }
  14. if(!file_exists($src_file)) {
  15. echo $src_file . " is not exists !";
  16. exit();
  17. }
  18. // Image type
  19. $type=exif_imagetype($src_file);
  20. $support_type=array(IMAGETYPE_JPEG , IMAGETYPE_PNG , IMAGETYPE_GIF);
  21. if(!in_array($type, $support_type,true)) {
  22. echo "this type of image does not support! only support jpg , gif or png";
  23. exit();
  24. }
  25. //Load image
  26. switch($type) {
  27. case IMAGETYPE_JPEG :
  28. $src_img=imagecreatefromjpeg($src_file);
  29. break;
  30. case IMAGETYPE_PNG :
  31. $src_img=imagecreatefrompng($src_file);
  32. break;
  33. case IMAGETYPE_GIF :
  34. $src_img=imagecreatefromgif($src_file);
  35. break;
  36. default:
  37. echo "Load image error!";
  38. exit();
  39. }
  40. $w=imagesx($src_img);
  41. $h=imagesy($src_img);
  42. $ratio_w=1.0 * $new_width / $w;
  43. $ ratio_h=1.0 * $new_height / $h;
  44. $ratio=1.0;
  45. // The height and width of the generated image are smaller or larger than the original ones. The principle is to enlarge by a large ratio and reduce by a large ratio (reduction ratio It’s smaller)
  46. if( ($ratio_w < 1 && $ratio_h < 1) || ($ratio_w > 1 && $ratio_h > 1)) {
  47. if($ratio_w < $ratio_h) {
  48. $ratio = $ratio_h ; // Case 1, the width ratio is smaller than the height direction, crop or enlarge according to the height ratio standard
  49. }else {
  50. $ratio = $ratio_w ;
  51. }
  52. // Define an intermediate temporary image, the aspect ratio of the image just meets the target requirements
  53. $inter_w=(int)($new_width / $ratio);
  54. $inter_h=(int) ($new_height / $ratio);
  55. $inter_img=imagecreatetruecolor($inter_w , $inter_h);
  56. //var_dump($inter_img);
  57. imagecopy($inter_img, $src_img, 0,0,0,0,$inter_w,$inter_h);
  58. // Generate an image with the maximum edge length as the size It is a temporary image of the target image $ratio ratio
  59. // Define a new image
  60. $new_img=imagecreatetruecolor($new_width,$new_height);
  61. //var_dump($new_img);exit();
  62. imagecopyresampled($new_img,$ inter_img,0,0,0,0,$new_width,$new_height,$inter_w,$inter_h);
  63. switch($type) {
  64. case IMAGETYPE_JPEG :
  65. imagejpeg($new_img, $dst_file,100); // Store image
  66. break;
  67. case IMAGETYPE_PNG :
  68. imagepng($new_img,$dst_file,100);
  69. break;
  70. case IMAGETYPE_GIF :
  71. imagegif($new_img,$dst_file,100);
  72. break;
  73. default:
  74. break;
  75. }
  76. } // end if 1
  77. // 2 One side of the target image is larger than the original image, and one side is smaller than the original image. First enlarge the plain image, and then crop it
  78. // =if( ($ratio_w < 1 && $ratio_h > 1) || ($ratio_w >1 && $ratio_h <1) )
  79. else{
  80. $ratio=$ratio_h>$ratio_w? $ratio_h : $ratio_w; //Take the value with the larger ratio
  81. //Define a The large image in the middle, the height or width of the image is equal to the target image, and then the original image is enlarged
  82. $inter_w=(int)($w * $ratio);
  83. $inter_h=(int) ($h * $ratio) ;
  84. $inter_img=imagecreatetruecolor($inter_w , $inter_h);
  85. //Crop the original image after scaling it
  86. imagecopyresampled($inter_img,$src_img,0,0,0,0,$inter_w,$inter_h,$w, $h);
  87. // Define a new image
  88. $new_img=imagecreatetruecolor($new_width,$new_height);
  89. imagecopy($new_img, $inter_img, 0,0,0,0,$new_width,$new_height);
  90. switch($type) {
  91. case IMAGETYPE_JPEG :
  92. imagejpeg($new_img, $dst_file,100); // Store image
  93. break;
  94. case IMAGETYPE_PNG :
  95. imagepng($new_img,$dst_file,100);
  96. break;
  97. case IMAGETYPE_GIF:
  98. imagegif($new_img,$dst_file,100);
  99. break;
  100. default:
  101. break;
  102. }
  103. }// if3
  104. }// end function
  105. my_image_resize('test.gif','11111.gif','100px','100px');
  106. //Source code download: http://www.pooy.net/phpphp.html
  107. ?>
Copy code


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn