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

php image processing method, php image processing class

Jul 25, 2016 am 09:06 AM

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 of this Website
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

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Apr 05, 2025 am 12:04 AM

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

Describe the SOLID principles and how they apply to PHP development. Describe the SOLID principles and how they apply to PHP development. Apr 03, 2025 am 12:04 AM

The application of SOLID principle in PHP development includes: 1. Single responsibility principle (SRP): Each class is responsible for only one function. 2. Open and close principle (OCP): Changes are achieved through extension rather than modification. 3. Lisch's Substitution Principle (LSP): Subclasses can replace base classes without affecting program accuracy. 4. Interface isolation principle (ISP): Use fine-grained interfaces to avoid dependencies and unused methods. 5. Dependency inversion principle (DIP): High and low-level modules rely on abstraction and are implemented through dependency injection.

How to automatically set permissions of unixsocket after system restart? How to automatically set permissions of unixsocket after system restart? Mar 31, 2025 pm 11:54 PM

How to automatically set the permissions of unixsocket after the system restarts. Every time the system restarts, we need to execute the following command to modify the permissions of unixsocket: sudo...

Explain the concept of late static binding in PHP. Explain the concept of late static binding in PHP. Mar 21, 2025 pm 01:33 PM

Article discusses late static binding (LSB) in PHP, introduced in PHP 5.3, allowing runtime resolution of static method calls for more flexible inheritance.Main issue: LSB vs. traditional polymorphism; LSB's practical applications and potential perfo

How to send a POST request containing JSON data using PHP's cURL library? How to send a POST request containing JSON data using PHP's cURL library? Apr 01, 2025 pm 03:12 PM

Sending JSON data using PHP's cURL library In PHP development, it is often necessary to interact with external APIs. One of the common ways is to use cURL library to send POST�...

Framework Security Features: Protecting against vulnerabilities. Framework Security Features: Protecting against vulnerabilities. Mar 28, 2025 pm 05:11 PM

Article discusses essential security features in frameworks to protect against vulnerabilities, including input validation, authentication, and regular updates.

How to debug CLI mode in PHPStorm? How to debug CLI mode in PHPStorm? Apr 01, 2025 pm 02:57 PM

How to debug CLI mode in PHPStorm? When developing with PHPStorm, sometimes we need to debug PHP in command line interface (CLI) mode...

See all articles