>백엔드 개발 >PHP 튜토리얼 >원격 이미지를 얻고 이미지 크기를 조정하는 PHP 구현 코드

원격 이미지를 얻고 이미지 크기를 조정하는 PHP 구현 코드

WBOY
WBOY원래의
2016-07-25 09:00:051401검색
  1. /**
  2. *
  3. *기능: 이미지 크기 조정 또는 썸네일 생성
  4. *수정일: 2013-2-15
  5. *반환: True/False
  6. *매개변수:
  7. * $Image 필요 조정됨 이미지(경로 포함)
  8. * $Dw=450 조정 시 최대 너비, 섬네일 시 절대 너비
  9. * $Dh=450 조정 시 최대 높이
  10. * $ Type=1 1, 조정 크기 2, 썸네일 생성
  11. * 사이트 http://bbs.it-home.org
  12. */
  13. $phtypes=array('img/gif', 'img/jpg', 'img/jpeg', 'img/bmp', 'img/pjpeg', 'img/x-png')
  14. function 압축Img($Image,$Dw,$Dh,$Type){
  15. echo $Image
  16. IF(!file_exists($Image)){
  17. echo "이미지가 없습니다."
  18. return false
  19. }
  20. echo "이미지가 있습니다."; > // 썸네일을 생성해야 하는 경우 원본 이미지를 복사하여 $Image에 다시 할당합니다(썸네일 생성 작업)
  21. // Type==1인 경우 원본 이미지 파일은 복사되지 않지만 원본 이미지 파일이 복사됩니다. 이미지 파일에서 축소된 이미지를 다시 생성합니다(크기 조정 작업)
  22. IF($Type!=1){
  23. copy($Image,str_replace(".","_x.", $Image))
  24. $Image=str_replace(".","_x.",$Image);
  25. }
  26. // 파일 형식을 가져오고 형식에 따라 다른 개체를 만듭니다.
  27. $ImgInfo= getimagesize($Image);
  28. Switch($ImgInfo[2]){
  29. 사례 1:
  30. $Img =@imagecreatefromgif($Image)
  31. 중단
  32. 사례 2 :
  33. $Img =@imagecreatefromjpeg($Image);
  34. 중단;
  35. 사례 3:
  36. $Img =@imagecreatefrompng($Image);
  37. 중단; // 객체가 성공적으로 생성되지 않은 경우 이미지가 아닌 파일이라는 의미입니다.
  38. IF(Empty($Img)){
  39. // 썸네일 생성 시 오류가 발생하는 경우, 복사된 파일 삭제
  40. IF($ Type!=1){
  41. unlink($Image);
  42. }
  43. return false
  44. }
  45. // 크기 조정 작업이 수행된 경우 ,
  46. IF($Type== 1){
  47. $w=ImagesX($Img)
  48. $h=ImagesY($Img)
  49. $width = $w; 높이 = $h
  50. IF( $width>$Dw){
  51. $Par=$Dw/$width
  52. $width=$Dw
  53. $height=$height*$Par;
  54. IF($height>$Dh ){
  55. $Par=$Dh/$height;
  56. $height=$Dh
  57. $width=$width*$Par
  58. } 🎜> } ElseIF($height>$Dh ) {
  59. $Par=$Dh/$height;
  60. $height=$Dh
  61. $width=$width*$Par
  62. IF( $width>$Dw){
  63. $Par=$Dw/$width;
  64. $width=$Dw;
  65. $height=$height*$Par
  66. }
  67. } Else
  68. $width=$width;
  69. $height=$height;
  70. }
  71. $nImg =ImageCreateTrueColor($width,$height);// 새로운 트루 컬러 캔버스 생성
  72. ImageCopyReSampled( $nImg,$Img,0,0,0 ,0,$width,$height,$w,$h);//이미지 일부 복사 및 크기 조정
  73. ImageJpeg($nImg,$Image);/ /이미지를 브라우저나 JPEG 형식으로 출력합니다.
  74. return true
  75. } Else {// 썸네일 생성 작업을 수행하면
  76. $w=ImagesX($Img); h=ImagesY($Img);
  77. $width = $w;
  78. $height = $h; $nImg =ImageCreateTrueColor($Dw,$Dh)
  79. IF($h/$ w>$Dh/$Dw){// 높이가 더 큽니다
  80. $width=$Dw
  81. $height=$h*$Dw/$w
  82. $IntNH=$height-$Dh;
  83. ImageCopyReSampled($nImg, $Img, 0, -$IntNH/1.8, 0, 0, $Dw, $height, $w, $h)
  84. } Else {// 너비 비율이 큽니다
  85. $height=$Dh;
  86. $width =$w*$Dh/$h;
  87. $IntNW=$width-$Dw
  88. ImageCopyReSampled($nImg, $Img,-$IntNW/1.8 ,0,0,0, $width, $w, $h);
  89. }
  90. ImageJpeg($nImg,$Image)
  91. return true; ;
  92. ?>
  93. 코드 복사
  94. 2. 원격 사진 가져오기

    1. //네트워크 이미지 경로
    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);//줄바꿈 문자 바꾸기
    5. $name = strrchr($tempPath, "/")
    6. $path = str_replace ($name, '', $tempPath);//개행 문자 바꾸기
    7. /**
    8. *경로를 기반으로 다중 레벨 디렉토리 생성
    9. *$dir 대상 디렉토리 $mode 권한, 0700은 가장 높은 권한을 의미
    10. */
    11. function makedir( $dir , $mode = "0700" ) {
    12. if(strpos($dir , "/" )){
    13. $dir_path = "" ;
    14. $dir_info = 폭발("/" , $dir )
    15. foreach($dir_info as $key => ; $value){
    16. $dir_path .= $value ;
    17. if (!file_exists($dir_path)){
    18. @mkdir($dir_path, $mode) 또는 die ("폴더 생성 실패") ;
    19. @chmod($dir_path, $mode);
    20. } else {
    21. $dir_path .= "/" ;
    22. 계속
    23. }
    24. $dir_path .= " /" ;
    25. }
    26. return $dir_path ;
    27. } else {
    28. @mkdir($dir, $mode) or die( "생성 실패, 권한을 확인하세요." ); dir, $mode);
    29. return $dir ;
    30. }
    31. } //makedir 종료
    32. makedir($path)
    33. /**
    34. *URL을 기준으로 서버에 있는 이미지 가져오기
    35. *$url서버에 있는 이미지 경로 $filename파일 이름
    36. * /
    37. function GrabImage($url,$filename="") {
    38. if($url=="") return false
    39. if($filename=="") {
    40. $ext =strrchr( $url,".");
    41. if($ext!=".gif" && $ext!=".jpg" && $ext!=".png")
    42. return false; filename=date("YmdHis").$ext;
    43. }
    44. ob_start()
    45. readfile($url)
    46. $img = ob_get_contents()
    47. $size = strlen($img)
    48. $fp2=@fopen($filename, "a")
    49. fwrite($fp2,$img)
    50. fclose ($fp2 );
    51. return $filename; }
    52. ?>
    53. 코드 복사
    3.

      업로드할 수 있는 파일 형식은 다음과 같습니다.
    1. echo $path."
      ";
    2. /**/
    3. $bigImg=GrabImage($imgPath, $tempPath );
    4. if($bigImg){
    5. echo '
      '
    6. } else {
    7. echo " false" ;
    8. }
    9. 압축Img($bigImg,100,80,1);
    10. ?>
    11. 코드 복사
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.