Home > Backend Development > PHP Tutorial > PHP implementation code to obtain remote images and adjust image size

PHP implementation code to obtain remote images and adjust image size

WBOY
Release: 2016-07-25 09:00:05
Original
1379 people have browsed it
  1. /**
  2. *
  3. *Function: adjust image size or generate thumbnail
  4. *Modified: 2013-2-15
  5. *Return: True/False
  6. *Parameters:
  7. * $Image The image that needs to be adjusted (including path)
  8. * $Dw= 450 The maximum width when adjusting; the absolute width when thumbnailing
  9. * $Dh=450 The maximum height when adjusting; the absolute height when thumbnailing
  10. * $Type=1 1, adjust the size; 2, generate thumbnails
  11. * site http: //bbs.it-home.org
  12. */
  13. $phtypes=array('img/gif', 'img/jpg', 'img/jpeg', 'img/bmp', 'img /pjpeg', 'img/x-png');
  14. function compressImg($Image,$Dw,$Dh,$Type){
  15. echo $Image;
  16. IF(!file_exists($Image)){
  17. echo " No image exists";
  18. return false;
  19. }
  20. echo "Image exists";
  21. // If you need to generate a thumbnail, copy the original image and re-assign it to $Image (generate thumbnail operation)
  22. // When Type= =1, the original image file will not be copied, but the reduced image will be regenerated on the original image file (resize operation)
  23. IF($Type!=1){
  24. copy($Image,str_replace(" .","_x.",$Image));
  25. $Image=str_replace(".","_x.",$Image);
  26. }
  27. // Get the file type and create different objects according to different types
  28. $ImgInfo=getimagesize($Image);
  29. Switch($ImgInfo[2]){
  30. case 1:
  31. $Img =@imagecreatefromgif($Image);
  32. break;
  33. case 2:
  34. $Img =@imagecreatefromjpeg($ Image);
  35. Break;
  36. case 3:
  37. $Img =@imagecreatefrompng($Image);
  38. break;
  39. }
  40. // If the object is not created successfully, it means it is a non-image file
  41. IF(Empty($Img)){
  42. // If there is an error when generating thumbnails, you need to delete the copied files
  43. IF($Type!=1){
  44. unlink($Image);
  45. }
  46. return false;
  47. }
  48. // If yes To perform the resize operation,
  49. IF($Type==1){
  50. $w=ImagesX($Img);
  51. $h=ImagesY($Img);
  52. $width = $w;
  53. $height = $h;
  54. IF($width>$Dw){
  55. $Par=$Dw/$width;
  56. $width=$Dw;
  57. $height=$height*$Par;
  58. IF($height>$Dh){
  59. $Par= $Dh/$height;
  60. $height=$Dh;
  61. $width=$width*$Par;
  62. }
  63. } ElseIF($height>$Dh) {
  64. $Par=$Dh/$height;
  65. $height= $Dh;
  66. $width=$width*$Par;
  67. IF($width>$Dw){
  68. $Par=$Dw/$width;
  69. $width=$Dw;
  70. $height=$height*$Par;
  71. }
  72. } Else {
  73. $width=$width;
  74. $height=$height;
  75. }
  76. $nImg =ImageCreateTrueColor($width,$height);// Create a new true color canvas
  77. ImageCopyReSampled($nImg,$Img ,0,0,0,0,$width,$height,$w,$h);//Resample and copy part of the image and resize it
  78. ImageJpeg($nImg,$Image);//Output the image in JPEG format To the browser or file
  79. return true;
  80. } Else {// If the thumbnail generation operation is performed,
  81. $w=ImagesX($Img);
  82. $h=ImagesY($Img);
  83. $width = $w;
  84. $height = $h;
  85. $nImg =ImageCreateTrueColor($Dw,$Dh);
  86. IF($h/$w>$Dh/$Dw){// Height is larger
  87. $width=$Dw;
  88. $ height=$h*$Dw/$w;
  89. $IntNH=$height-$Dh;
  90. ImageCopyReSampled($nImg, $Img, 0, -$IntNH/1.8, 0, 0, $Dw, $height, $w , $h);
  91. } Else {// Larger width ratio
  92. $height=$Dh;
  93. $width=$w*$Dh/$h;
  94. $IntNW=$width-$Dw;
  95. ImageCopyReSampled($nImg, $Img,-$IntNW/1.8,0,0,0, $width, $Dh, $w, $h);
  96. }
  97. ImageJpeg($nImg,$Image);
  98. return true;
  99. }
  100. };
  101. ?>
Copy code

2. Get remote pictures

  1. //Network image path
  2. $imgPath = 'http://bbs.it-home.org/phone/compress-img/251139474ba926db3d7850.jpg';
  3. //$imgPath = "http://bbs.it-home.org/userfiles/image/20111125/251139474ba926db3d7850.jpg";
  4. $tempPath = str_replace('http://bbs.it-home.org/', '', $imgPath );//Replace newline characters
  5. $name = strrchr($tempPath, "/");
  6. $path = str_replace($name, '', $tempPath);//Replace newline characters
  7. /**
  8. *Create multi-level directories based on the path path
  9. *$dir target directory $mode permissions, 0700 represents the highest permissions
  10. */
  11. function makedir( $dir , $mode = "0700" ) {
  12. if(strpos($dir , "/" )){
  13. $dir_path = "" ;
  14. $dir_info = explode("/" , $dir );
  15. foreach($dir_info as $key => $value){
  16. $dir_path .= $value ;
  17. if (!file_exists($dir_path)){
  18. @mkdir($dir_path, $mode) or die (" Failed to create folder" );
  19. @chmod($dir_path, $mode);
  20. } else {
  21. $dir_path .= "/" ;
  22. continue ;
  23. }
  24. $dir_path .= "/" ;
  25. }
  26. return $dir_path ;
  27. } else {
  28. @mkdir($dir, $mode) or die( "Creation failed, please check permissions" );
  29. @chmod($dir, $mode);
  30. return $dir ;
  31. }
  32. } //end makedir
  33. makedir($path);
  34. /**
  35. *Get the image on the server based on the url
  36. *$url The image path on the server $filename file name
  37. */
  38. function GrabImage($url,$filename="") {
  39. if($url=="") return false;
  40. if($filename=="") {
  41. $ext=strrchr($url,".");
  42. if($ext!=".gif" && $ext!=".jpg" && $ext!= ".png")
  43. return false;
  44. $filename=date("YmdHis").$ext;
  45. }
  46. ob_start();
  47. readfile($url);
  48. $img = ob_get_contents();
  49. ob_end_clean();
  50. $size = strlen($img);
  51. $fp2=@fopen($filename, "a");
  52. fwrite($fp2,$img);
  53. fclose($fp2);
  54. return $filename;
  55. }
  56. ?>
Copy code

3. Call example

  1. The file types allowed to be uploaded are:
  2. echo $path ."
    ";
  3. /**/
  4. $bigImg=GrabImage($imgPath, $tempPath);
  5. if($bigImg){
  6. echo '
  7. Copy code
source:php.cn
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template