PHP의 이미지 압축의 두 가지 예

WBOY
풀어 주다: 2016-07-25 08:52:56
원래의
1036명이 탐색했습니다.
  1. /**
  2. * 설명 압축 이미지
  3. * @param sting $imgsrc 이미지 경로
  4. * @param string $imgdst 압축 저장 경로
  5. */
  6. 함수 image_png_size_add($imgsrc,$imgdst){
  7. list($width ,$height,$type)=getimagesize($imgsrc);
  8. $new_width = ($width>600?600:$width)*0.9;
  9. $new_height =($height>600?600:$height)*0.9;
  10. 스위치($type){
  11. 사례 1:
  12. $giftype=check_gifgraphic($imgsrc);
  13. if($giftype){
  14. header('Content-Type:image/gif');
  15. $image_wp=imagecreatetruecolor($new_width, $new_height);
  16. $image = imagecreatefromgif($imgsrc);
  17. imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
  18. imagejpeg($image_wp, $imgdst,75);
  19. imagedestroy($image_wp);
  20. }
  21. 휴식;
  22. 사례 2:
  23. header('Content-Type:image/jpeg');
  24. $image_wp=imagecreatetruecolor($new_width, $new_height);
  25. $image = imagecreatefromjpeg($imgsrc);
  26. imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
  27. imagejpeg($image_wp, $imgdst,75);
  28. imagedestroy($image_wp);
  29. 휴식;
  30. 사례 3:
  31. header('Content-Type:image/png');
  32. $image_wp=imagecreatetruecolor($new_width, $new_height);
  33. $image = imagecreatefrompng($imgsrc);
  34. imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
  35. imagejpeg($image_wp, $imgdst,75);
  36. imagedestroy($image_wp);
  37. 휴식;
  38. } // bbs.it-home.org
  39. }
  40. /**
  41. * 설명에 따라 gif 애니메이션인지 여부가 결정됩니다.
  42. * @param sting $image_file 이미지 경로
  43. * @return boolean t yes f no
  44. */
  45. function check_gifgraphic($image_file){
  46. $fp = fopen($image_file,' rb');
  47. $image_head = fread($fp,1024);
  48. fclose($fp);
  49. return preg_match("/".chr(0x21).chr(0xff).chr(0x0b).'NETSCAPE2.0'."/",$image_head)?false:true;
  50. }
  51. ?>
复代码

예 2:

  1. /*
  2. 기능: 이미지 크기 조정 또는 썸네일 생성
  3. 반환: True/False
  4. 매개변수 :
  5. $Image 조정해야 할 이미지(경로 포함)
  6. $Dw=450 조정 시 최대 너비, 썸네일링 시 절대 너비
  7. $Dh=450 절대 조정 시 최대 높이. 썸네일 시 너비 Height
  8. $Type=1 1, 크기 조정 2, 썸네일 생성
  9. $path='img/' //Path
  10. $phtypes=array(
  11. 'img/gif' ,
  12. 'img/jpg',
  13. 'img/jpeg',
  14. 'img/bmp',
  15. 'img/pjpeg',
  16. 'img/x-png'
  17. );
  18. 함수 Img($Image,$Dw=450,$Dh=450,$Type=1){
  19. IF(!File_Exists($Image)){
  20. False 반환;
  21. }
  22. //썸네일을 생성해야 하는 경우 원본 이미지를 복사하여 $Image에 다시 할당하세요.
  23. IF($Type!=1){
  24. Copy($Image,Str_Replace("."," _x." ,$Image));
  25. $Image=Str_Replace(".","_x.",$Image);
  26. }
  27. //파일 형식을 가져오고 서로 다른 개체를 만듭니다. 유형
  28. $ImgInfo=GetImageSize($Image);
  29. Switch($ImgInfo[2]){
  30. 사례 1:
  31. $Img = @ImageCreateFromGIF($Image);
  32. 중단;
  33. 사례 2:
  34. $Img = @ImageCreateFromJPEG($Image);
  35. 중단;
  36. 사례 3:
  37. $Img = @ImageCreateFromPNG($Image);
  38. 중단;
  39. }
  40. //오브젝트가 성공적으로 생성되지 않으면 이미지가 아닌 파일이라는 의미입니다.
  41. IF(Empty($Img)){
  42. //썸네일 생성 시 오류가 발생하는 경우 복사한 파일을 삭제해야 합니다
  43. IF($Type!=1){Unlink($Image);}
  44. Return False;
  45. }
  46. //크기 조정 작업을 수행하면
  47. IF($Type==1 ){
  48. $w=ImagesX($Img);
  49. $h=ImagesY($Img);
  50. $width = $w;
  51. $height = $ h;
  52. IF($ width>$Dw){
  53. $Par=$Dw/$width;
  54. $width=$Dw;
  55. $height=$height*$Par;
  56. IF($height>$Dh) {
  57. $Par=$Dh/$height;
  58. $height=$Dh;
  59. $width=$width*$Par;
  60. }
  61. } ElseIF($height>$Dh) {
  62. $Par=$Dh/$height;
  63. $height=$Dh;
  64. $width=$width*$Par;
  65. IF($width> $Dw){
  66. $ Par=$Dw/$width;
  67. $width=$Dw;
  68. $height=$height*$Par;
  69. }
  70. }Else{
  71. $width=$width;
  72. $height=$height;
  73. }
  74. $nImg = ImageCreateTrueColor($width,$height); //새로운 트루 컬러 캔버스 생성
  75. ImageCopyReSampled($nImg, $Img,0,0,0, 0,$width,$height,$w,$h); //이미지 복사 부분을 리샘플링하고 크기를 조정합니다.
  76. ImageJpeg($nImg,$Image); 이미지를 JPEG 형식의 브라우저나 파일로 전송
  77. Return True;
  78. //썸네일 생성 작업이 수행되면
  79. }Else{
  80. $w=ImagesX($Img);
  81. $ h=ImagesY($Img);
  82. $width = $w;
  83. $height = $h;
  84. $nImg = ImageCreateTrueColor($Dw,$Dh);
  85. IF($h/$ w>$Dh/$Dw){ //높이 비율이 더 큽니다
  86. $width=$Dw;
  87. $height=$h*$Dw/$w;
  88. $IntNH=$height-$ Dh;
  89. ImageCopyReSampled($nImg, $ Img, 0, -$IntNH/1.8, 0, 0, $Dw, $height, $w, $h);
  90. }Else{ //너비 비율은 대형
  91. $height=$Dh;
  92. $width=$w*$Dh/$h;
  93. $IntNW=$width-$Dw;
  94. ImageCopyReSampled($nImg, $Img, -$ IntNW/1.8, 0, 0, 0, $width, $Dh, $w, $h);
  95. }
  96. ImageJpeg($nImg,$Image);
  97. True 반환;
  98. }
  99. }
  100. ?>
  101. < ;html>
  102. < td>사진 업로드
  103. 업로드가 허용되는 파일 형식은 다음과 같습니다:
  104. < ;?php
  105. if($_SERVER['REQUEST_METHOD' ]=='POST'){
  106. if (!is_uploaded_file($_FILES["photo"][tmp_name])){
  107. echo "사진 존재하지 않습니다.";
  108. exit();
  109. }
  110. if(!is_dir('img')){//경로가 존재하지 않으면 경로를 생성하세요.
  111. mkdir('img') ;
  112. }
  113. $upfile=$_FILES["photo"];
  114. $pinfo=pathinfo($upfile["name"]);
  115. $name=$pinfo['basename']; //파일 이름
  116. $tmp_name=$upfile["tmp_name"];
  117. $file_type=$pinfo['extension'];//파일 형식 가져오기
  118. $showphpath=$path.$name;
  119. if(in_array($upfile["type"],$phtypes )){
  120. echo "파일 형식이 일치하지 않습니다! ";
  121. exit();
  122. }
  123. if(move_uploaded_file($tmp_name,$path.$name)){
  124. echo "성공했습니다! ";
  125. Img($showphpath,100,800,2);
  126. }
  127. echo "";
  128. }
  129. ? >
  130. 코드 복사


원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!