Home  >  Article  >  Backend Development  >  PHP code for screenshots without deformation

PHP code for screenshots without deformation

WBOY
WBOYOriginal
2016-07-25 08:46:10851browse
  1. function my_image_resize($src_file, $dst_file , $new_width , $new_height)
  2. {
  3. $src_img=imagecreatefromjpeg($src_file);
  4. $w=imagesx($src_img);
  5. $h= imagesy($src_img);
  6. $ratio_w=1.0 * $new_width / $w;
  7. $ratio_h=1.0 * $new_height / $h;
  8. $ratio=1.0;
  9. // The height and width of the generated image are smaller than the original one , or both are large, the principle is to use a large ratio to enlarge, and use a large ratio to reduce (the reduced ratio will be smaller)
  10. if( ($ratio_w < 1 && $ratio_h < 1) || ($ratio_w > 1 && $ratio_h > 1))
  11. {
  12. if($ratio_w < $ratio_h)
  13. {
  14. $ratio = $ratio_h ; // Case 1, the width ratio is smaller than the height direction, crop according to the height ratio standard or Zoom in
  15. }else {
  16. $ratio = $ratio_w ;
  17. }
  18. // Define an intermediate temporary image whose aspect ratio just meets the target requirements
  19. $inter_w=(int)($new_width / $ratio);
  20. $inter_h=(int) ($new_height / $ratio);
  21. $inter_img=imagecreatetruecolor($inter_w , $inter_h);
  22. imagecopy($inter_img, $src_img, 0,0,0,0,$inter_w,$inter_h) ;
  23. // Generate a temporary image with the maximum side length as the size of the target image $ratio
  24. // Define a new image
  25. $new_img=imagecreatetruecolor($new_width,$new_height);
  26. imagecopyresampled($new_img,$ inter_img,0,0,0,0,$new_width,$new_height,$inter_w,$inter_h);
  27. //imagejpeg($new_img, $dst_file,100); // Store image
  28. }
  29. // end if 1
  30. // 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 ordinary image, and then crop it
  31. //if( ($ratio_w < 1 && $ratio_h > 1) || ($ratio_w > ;1 && $ratio_h <1) )
  32. else
  33. {
  34. $ratio=$ratio_h>$ratio_w? $ratio_h : $ratio_w; //Take the value with the larger ratio
  35. //Define a large image in the middle, the image The height or width is equal to the target image, and then enlarge the original image
  36. $inter_w=(int)($w * $ratio);
  37. $inter_h=(int) ($h * $ratio);
  38. $inter_img=imagecreatetruecolor ($inter_w , $inter_h);
  39. //Crop the original image after scaling it
  40. imagecopyresampled($inter_img,$src_img,0,0,0,0,$inter_w,$inter_h,$w,$h);
  41. / / Define a new image
  42. $new_img=imagecreatetruecolor($new_width,$new_height);
  43. imagecopy($new_img, $inter_img, 0,0,0,0,$new_width,$new_height);
  44. }
  45. imagejpeg($new_img , $dst_file,100); //Storage image
  46. }
  47. $filename = "110.jpg"; //The path of the original image
  48. $fileto="120.jpg";//The path to save after taking the screenshot
  49. $new_w =300;//Set width
  50. $new_h=350; //Set height
  51. my_image_resize($filename,$fileto,$new_w,$new_h);
  52. ?>
Copy code

No deformation, PHP


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