ホームページ > バックエンド開発 > PHPチュートリアル > 画像を歪みなく比例的に拡大縮小するための PHP 実装コード

画像を歪みなく比例的に拡大縮小するための PHP 実装コード

WBOY
リリース: 2016-07-25 08:51:35
オリジナル
925 人が閲覧しました
  1. /**
  2. * PHP 画像のカットとスケーリング関数のパラメーターの説明:
  3. * $im 画像オブジェクト。PHP が png と gif をサポートしている場合、imagecreatefromgif()、imagecreatefrompng(); を使用して画像オブジェクトを読み取る必要があります。 * $maxwidth 定義 生成される画像の最大幅 (単位: ピクセル)
  4. * $maxheight 生成される画像の最大の高さ (単位: ピクセル)
  5. * $name 生成される画像の名前
  6. * $filetype 最終的に生成される画像(.jpg/.png/.gif) と入力してください
  7. */
  8. functionreasonimage($im, $maxwidth, $maxheight, $name, $filetype) {
  9. //スケーリングが必要な画像の実際の幅と高さを読み取ります
  10. $pic_width = imagex ($im);
  11. $pic_height = imagey($im);
  12. //実際の画像の幅と高さ、生成される画像の幅と高さの圧縮率を計算することで、最終的に画像のスケーリングが幅と高さのどちらに基づいているかを決定します。 現在のプログラム 画像は幅に基づいてスケーリングされます。
  13. if (($maxwidth && $pic_width > $maxwidth) || ($maxheight && $pic_height > $maxheight)) {
  14. //実際の画像の長さまたは幅が画像の長さまたは幅より小さい場合生成されたイメージを指定した後、長さに基づいてイメージを拡大縮小するか、幅に基づいてイメージを拡大縮小します。
  15. if ($maxwidth && $pic_width > $maxwidth) {
  16. $widthratio = $maxwidth / $pic_width;
  17. $resizewidth_tag = true;
  18. }
  19. if ($maxheight && $pic_height > $maxheight) {
  20. $heightratio = $maxheight / $pic_height;
  21. $resizeheight_tag = true;
  22. }
  23. if ($resizewidth_tag && $resizeheight_tag) {
  24. if ($widthratio $ratio = $widthratio;
  25. else
  26. $ratio = $heightratio;
  27. }
  28. if ($resizewidth_tag && !$resizeheight_tag)
  29. $ratio = $widthratio;
  30. if ($resizeheight_tag && !$resizewidth_tag)
  31. $ratio = $heightratio;
  32. // によって生成された画像の長さと幅を計算します。最終的なスケーリング。
  33. $newwidth = $pic_width * $ratio;
  34. $newheight = $pic_height * $ratio;
  35. // 最終的に生成される画像の長さと幅に基づいて画像サイズを変更します。 画像サイズを変更するには 2 つの方法があります。
  36. //imagecopyresize () 関数はすべての gd バージョンで有効ですが、画像をスケーリングするアルゴリズムは荒いです。
  37. //imagecopyresamples()、ピクセル補間アルゴリズムによって取得された画像のエッジは比較的滑らかですが、この関数の速度は imagecopyresize() よりも遅くなります。
  38. if (function_exists("imagecopyresampled")) {
  39. $newim = imagecreatetruecolor($newwidth, $newheight);
  40. imagecopyresampled($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $pic_width, $pic_height);
  41. } else {
  42. $newim = imagecreate($newwidth, $newheight);
  43. imagecopyresize($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $pic_width, $pic_height) ;
  44. }
  45. //最後に、処理された画像を生成します。gif または png を生成する必要がある場合は、imagejpeg() 関数を imagegif() または imagepng() に変更する必要があります
  46. $name = $name;
  47. imagejpeg ($ newim, $name);
  48. imagedestroy($newim);
  49. } else {
  50. $name = $name . $filetype;
  51. imagejpeg($im, $name);
  52. }
  53. }
コードをコピーします
説明: PHP gd ライブラリ バージョン 1.6.2 では以前 gif 形式がサポートされていましたが、gif 形式は lzw アルゴリズムを使用しており、特許権が含まれているため、gd バージョン 1.6.2 以降は gif 形式はサポートされません。 Windows 環境の場合は、php.ini ファイルを入力して extension=php_gd2.dll を見つけ、# を削除して、Apache を再起動します。Linux 環境で gif、png、jpeg をサポートしたい場合は、次の操作が必要です。 libpng と zlib 、および freetype フォントをダウンロードしてインストールします。


ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート