首頁  >  文章  >  後端開發  >  php圖片壓縮的實作程式碼

php圖片壓縮的實作程式碼

WBOY
WBOY原創
2016-07-25 09:00:07898瀏覽
  1. /*

  2. 函數:調整圖片尺寸或產生縮圖
  3. 返回:True/False
  4. 參數:
  5. $Image 需要調整的圖片(含路徑)
  6. $Dw=450 調整時最大寬度;縮圖時的絕對寬度
  7. $Dh=450 調整時最大高度;縮圖時的絕對高度
  8. $Type=1 1,調整尺寸; 2,產生縮圖
  9. site http://bbs.it-home.org
  10. */
  11. $path='img/';//路徑

  12. $phtypes=array(
  13. 'img/gif',
  14. 'img/jpg',
  15. 'img/jpeg',
  16. ' img/bmp',
  17. 'img/pjpeg',
  18. 'img/x-png'
  19. );
  20. FunctionImg($Image,$Dw=450,$ Dh=450,$Type=1){

  21. IF(!File_Exists($Image)){
  22. ReturnFalse;
  23. }
  24. #如果需要產生縮圖,則將原圖拷貝一下$Image賦值
  25. IF($Type!=1){
  26. Copy($Image,Str_Replace(".","_x.",$Image));
  27. $Image=Str_Replace("." ,"_x.",$Image);
  28. }
  29. #取得檔案的型別,依照不同的型別建立不同的物件

  30. $ImgInfo=GetImageSize($Image);
  31. Switch($ImgInfo[2]){
  32. Case1:
  33. $Img =@ImageCreateFromGIF($Image);
  34. Break;
  35. Case2:
  36. $Img =@ImageCreateFromJ5( Image);
  37. Break;
  38. Case3:
  39. $Img =@ImageCreateFromPNG($Image);
  40. Break;
  41. }
  42. #如果物件沒有建立成功,則說明非圖片檔案

  43. IF(Empty($Img)){
  44. #如果是產生縮圖的時候出錯,則需要刪除已經複製的檔案
  45. IF($Type!=1 ){Unlink($Image);}
  46. ReturnFalse;
  47. }
  48. #如果是執行調整尺寸操作則

  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. }
  65. }ElseIF($height>$Dh){
  66. $Par=$Dh/$height;
  67. $height=$Dh;
  68. $width=$width*$Par;
  69. IF($width>$Dw){
  70. $Par=$Dw /$width;
  71. $width=$Dw;
  72. $height=$height*$Par;
  73. }
  74. }Else{
  75. $width=$width;
  76. $height= $height;
  77. }
  78. $nImg =ImageCreateTrueColor($width,$height); #新建一個真彩色畫布
  79. ImageCopyReSampled($nImg,$Img,0,0,0,0,$width,$width, $height,$w,$h);#重採樣拷貝部分影像並調整大小
  80. ImageJpeg($nImg,$Image); #以JPEG格式將影像輸出到瀏覽器或檔案
  81. ReturnTrue;
  82. #如果是執行產生縮圖操作則
  83. }Else{
  84. $w=ImagesX($Img);
  85. $h=ImagesY($Img);
  86. $width = $w;
  87. $height = $h;
  88. $nImg =ImageCreateTrueColor($Dw,$Dh);

  89. IF($h/$w>$Dh/$Dw){#高比較大
  90. $width=$Dw;
  91. $height=$h*$Dw/$w;
  92. $IntNH=$height-$Dh;
  93. ImageCopyReSampled($nImg, $Img,0 ,-$IntNH/1.8,0,0, $Dw, $height, $w, $h);
  94. }Else{ #寬比較大
  95. $height=$Dh;
  96. $width=$ w*$Dh/$h;
  97. $IntNW=$width-$Dw;
  98. ImageCopyReSampled($nImg, $Img,-$IntNW/1.8,0,0,0, $width, $Dh, $ w, $h);
  99. }
  100. ImageJpeg($nImg,$Image);
  101. ReturnTrue;
  102. }
  103. }
?>
複製程式碼

2、呼叫範例

  1. 上傳圖片
  2. 允許上傳的檔案類型為:=implode(', ',$phtypes)?>
  3. /**
  4. 圖片壓縮處理
  5. */
  6. if($_SERVER['REQUEST_METHOD']=='POST'){
  7. if(!is_uploaded_file($_FILES["photo"][tmp_name])){
  8. echo "圖片不存在";
  9. exit();
  10. }
  11. if(!is_dir('img')){//路徑若不存在則建立

  12. mkdir('img' );
  13. }
  14. $upfile=$_FILES["photo"];

  15. $pinfo=pathinfo($upfile["name"]);
  16. $name= $pinfo['basename'];//檔案名稱
  17. $tmp_name=$upfile["tmp_name"];
  18. $file_type=$pinfo['extension'];//取得檔案類型
  19. $showphpath =$path.$name;
  20. if(in_array($upfile["type"],$phtypes)){
  21. echo "檔案類型不符!";
  22. exit();
  23. }
  24. if(move_uploaded_file($tmp_name,$path.$name)){
  25. echo "成功!";
  26. Img($showphpath,100,800,2);
  27. }
  28. echo🎜> echo🎜> echo🎜> echo🎜> echo🎜> echo🎜> echo🎜> echo🎜> echo🎜> echo🎜> echo🎜> echo🎜> echo "php圖片壓縮的實作程式碼";
  29. }
  30. ?>
複製程式碼


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn