ホームページ >バックエンド開発 >PHPチュートリアル >画像を比例的に拡大縮小する PHP 関数

画像を比例的に拡大縮小する PHP 関数

WBOY
WBOYオリジナル
2016-07-25 08:51:43954ブラウズ
  1. 関数 raiseImage($im,$maxwidth,$maxheight,$name,$filetype)
  2. {
  3. $pic_width = imagex($im);
  4. $pic_height = 画像sy($im);
  5. if(($maxwidth && $pic_width > $maxwidth) || ($maxheight && $pic_height > $maxheight))
  6. {
  7. if($maxwidth && $pic_width>$maxwidth)
  8. {
  9. $widthratio = $maxwidth /$pic_width;
  10. $resizewidth_tag = true;
  11. }
  12. if($maxheight && $pic_height>$maxheight)
  13. {
  14. $heightratio = $maxheight/$pic_height;
  15. $resizeheight_tag = true;
  16. }
  17. if($resizewidth_tag && $resizeheight_tag)
  18. {
  19. if($widthratio$ratio = $widthratio;
  20. else
  21. $ratio = $heightratio;
  22. }
  23. if($resizewidth_tag && !$resizeheight_tag)
  24. $ratio = $widthratio;
  25. if($resizeheight_tag && !$resizewidth_tag)
  26. $ratio = $heightratio;
  27. $newwidth = $pic_width * $ratio;
  28. $newheight = $pic_height * $ratio;
  29. if(function_exists("imagecopyresampled"))
  30. {
  31. $newim = imagecreatetruecolor($newwidth,$newheight);
  32. imagecopyresampled($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height);
  33. }
  34. else
  35. {
  36. $newim = imagecreate($newwidth,$newheight);
  37. imagecopyresize($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height);
  38. }
  39. $name = $name.$ファイルタイプ;
  40. imagejpeg($newim,$name);
  41. imagedestroy($newim);
  42. }
  43. else
  44. {
  45. $name = $name.$filetype;
  46. imagejpeg($im,$name);
  47. }
  48. }
复制代码

パラメータ说明: $im 画像オブジェクト、関数用関数の前に、imagecreatefromjpeg() を使用して画像オブジェクトを取得する必要があります。PHP 環境が PNG、GIF をサポートしている場合は、imagecreatefromgif()、imagecreatefrompng() も使用できます。 $maxwidth 生成する画像の最大値(単位:像素)を決定します $maxheight 生成する画像の最大高さ(単位:像素) $name 生成された画像名 $filetype 最も生成される画像の種類(.jpg/.png/.gif)

代注释: 3~4行目:ダウンロードが必要な画像强噅高 8〜26行目:実際の画像サイズと必要な画像サイズの圧縮比を計算することにより、画像圧縮の実行は画像の高さに応じて実行されることになり、現在のプログラムは画像の高さに応じて実行されます。画像の展開を実行すると、22 行目のフレーズを $widthratio > $heightratio に変更できます 28〜31行目:実際の画像の長さまたは振幅が、生成する画像の規定の長さまたは振幅よりも小さい場合、長さに応じて画像の縮小を行い、また、幅に応じて画像の縮小を行う。 33~34行目:最終的に圧縮して生成する画像の長さを計算します。 36 ~ 45 行目: 計算された最終生成イメージに基づいてイメージ サイズを変更します。イメージ サイズを変更する方法は 2 つあります。ImageCopyResize() 関数はすべての GD バージョンで有効ですが、イメージを圧縮するアルゴリズムに比べて粗いです。 ()、そのピクセル値計算法で得られる画像の縮小はより平坦ですが、この関数の速度は ImageCopyResize() よりも遅いです。 47~49行目:処理後の画像を最終的に生成します。GIFまたはPNGを生成する必要がある場合は、imagejpeg()関数をimagegif()またはimagepng()に変更する必要があります。 51~56行目: 最後の画像の長さが、生成された画像の長さよりも小さい場合は、画像の原文を保持し、GIFまたはPNGを生成する必要がある場合は、imagejpeg()関数をimagegif()またはimagepngに変更する必要があります。 ()。

GD 1.6.2 バージョン以前は GIF 形式をサポートしていましたが、GIF 形式は LZW 演算法を使用して保護されていたため、GD1.6.2 バージョン以降は GIF 形式をサポートしませんでした。WINDOWS の環境の場合は、PHP.INI を入力する必要があります。 Linux環境の場合は、GIF、PNG、JPEGをサポートしており、libpng、zlib、およびfreetype字体を削除してインストールする必要があります。

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