PHP画像圧縮実装コード

WBOY
WBOYオリジナル
2016-07-25 09:00:07914ブラウズ
  1. /*

  2. 関数: 画像サイズを調整するか、サムネイルを生成します
  3. 戻り値: True/False
  4. パラメータ:
  5. $Image 調整する必要がある画像 (パスを含む)
  6. $Dw =450 調整時の最大幅、サムネイル作成時の絶対幅
  7. $Dh=450 調整時の最大高さ、サムネイル作成時の絶対高さ
  8. $Type=1 1、サイズを調整します
  9. サイト http: // bbs.it-home.org
  10. */

  11. $path='img/';//path

  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. ブレーク;
  35. ケース 2:
  36. $Img =@ImageCreateFromJPEG($Image);
  37. ブレーク;
  38. ケース 3:
  39. $Img =@ImageCreateFromPNG($Image);
  40. ブレーク;
  41. }< ;/p>
  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. $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); #新しいトゥルー カラー キャンバスを作成します
  77. ImageCopyReSampled($nImg,$Img,0,0,0,0, $width,$height,$ w,$h); #画像のコピー部分をリサンプルしてサイズ変更します
  78. ImageJpeg($nImg,$Image) #画像をブラウザまたはJPEG形式で出力します
  79. ReturnTrue;
  80. #サムネイル生成操作を実行している場合は、
  81. }Else{
  82. $w=ImagesX($Img);
  83. $h=ImagesY($Img);
  84. $width = $w;
  85. $height = $h;< /p>
  86. $nImg =ImageCreateTrueColor($Dw,$Dh);

  87. IF($h/$w>$Dh/$Dw){#高さが大きくなります
  88. $width=$Dw;
  89. $height =$h*$Dw/$w;
  90. $IntNH=$height-$Dh;
  91. ImageCopyReSampled($nImg, $Img,0,-$IntNH/1.8,0,0, $Dw, $height, $w, $h);
  92. }Else{ #Width 比較的大きい
  93. $height=$Dh;
  94. $width=$w*$Dh/$h;
  95. $IntNW=$width-$Dw;
  96. ImageCopyReSampled($nImg, $Img ,-$IntNW/1.8,0,0 ,0, $width, $Dh, $w, $h);
  97. }
  98. ImageJpeg($nImg,$Image);
  99. ReturnTrue;
  100. }
  101. }
  102. ?>< ;/p>
コードをコピー

2. 電話の例

  1. アップロードできるファイルの種類は次のとおりです:
  2. /**
  3. 画像圧縮処理
  4. */
  5. if($ _SERVER ['REQUEST_METHOD']=='POST'){
  6. if(!is_uploaded_file($_FILES["photo"][tmp_name])){
  7. echo "写真が存在しません";
  8. exit();
  9. }< ;/p> ;
  10. if(!is_dir('img')){//パスが存在しない場合は作成します

  11. mkdir('img');
  12. }

  13. $upfile=$_FILES ["写真"];

  14. $pinfo=pathinfo($upfile["name"]);
  15. $name=$pinfo['basename'];// ファイル名
  16. $tmp_name=$upfile[" tmp_name"];
  17. $file_type=$pinfo['extension'];// ファイルの種類を取得します
  18. $showphpath=$path.$name;
  19. if(in_array($upfile["type"],$phtypes)) {
  20. echo "ファイル タイプに一貫性がありません! ";
  21. exit();
  22. }
  23. if(move_uploaded_file($tmp_name,$path.$name)){
  24. echo "成功! ";
  25. Img($showphpath,100,800,2);
  26. }
  27. echo "";
  28. }
  29. ?>
  30. < ;/html>

  31. コードをコピー
  32. 写真をアップロード


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。