function resizeImage($im,$maxwidth,$maxheight,$name,$filetype) { $pic_width = imagesx($im); $pic_height = imagesy($im); if(($maxwidth && $pic_width > $maxwidth) || ($maxheight && $pic_height > $maxheight)) { if($maxwidth && $pic_width>$maxwidth) { $widthratio = $maxwidth/$pic_width; $resizewidth_tag = true; } if($maxheight && $pic_height>$maxheight) { $heightratio = $maxheight/$pic_height; $resizeheight_tag = true; } if($resizewidth_tag && $resizeheight_tag) { if($widthratio<$heightratio) $ratio = $widthratio; else $ratio = $heightratio; } if($resizewidth_tag && !$resizeheight_tag) $ratio = $widthratio; if($resizeheight_tag && !$resizewidth_tag) $ratio = $heightratio; $newwidth = $pic_width * $ratio; $newheight = $pic_height * $ratio; if(function_exists("imagecopyresampled")) { $newim = imagecreatetruecolor($newwidth,$newheight); imagecopyresampled($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height); } else { $newim = imagecreate($newwidth,$newheight); imagecopyresized($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height); } $name = $name.$filetype; imagejpeg($newim,$name); imagedestroy($newim); } else { $name = $name.$filetype; imagejpeg($im,$name); } }
パラメータの説明:
$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 バージョンで有効ですが、画像をスケーリングするためのアルゴリズム 比較的大まかです。 ImageCopyResamples() を使用すると、ピクセル補間アルゴリズムによって取得された画像のエッジは比較的滑らかになりますが、この関数の速度は ImageCopyResize() よりも遅くなります。
47〜49行目: 最終的に処理された画像が生成されますGIFまたはPNGを生成する必要がある場合は、imagejpeg()関数をimagegif()またはimagepng()に変更する必要があります
51〜56行目:実際の画像の長さと幅が、生成された画像の指定された長さと幅よりも小さい場合は、画像をそのままにしておきます。同様に、GIF または PNG を生成する必要がある場合は、imagejpeg() 関数を imagegif に変更する必要があります。 () または imagepng()。特記事項:
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 の画像スケーリング機能「等比率で歪みのないスケーリングを実現する」について紹介しましたが、PHP チュートリアルに興味のある方の参考になれば幸いです。