php 変形されていないズーム画像:
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 行目: 実際の画像の長さまたは幅が長さより小さい場合または生成されたイメージの幅をWidthで指定した場合、イメージは長さに基づいて拡大縮小されるか、イメージは幅に基づいて拡大縮小されます。
行 33 ~ 34: 最終的なズーム画像の長さと幅を計算します。
行 36 ~ 45: 最終生成イメージの計算された長さと幅に従ってイメージ サイズを変更します。ただし、画像は拡大縮小されます。アルゴリズムは比較的大まかです。 ImageCopyResamples() を使用すると、ピクセル補間アルゴリズムによって取得された画像のエッジは比較的滑らかになりますが、この関数の速度は ImageCopyResize() よりも遅くなります。
47~49行目: 最終的に処理済みの画像が生成されます。GIFまたはPNGを生成する必要がある場合は、imagejpeg()関数をimagegif()またはimagepng()に変更する必要があります。 51~56行目:実際の画像の縦横が生成画像の指定縦横よりも小さい場合は画像をそのままにし、同様にGIFやPNGを生成する必要がある場合は変更する必要があります。 imagejpeg() 関数を imagegif() または imagepng () に変換します。
特記事項:
GD ライブラリ バージョン 1.6.2 では以前 GIF 形式がサポートされていましたが、GIF 形式は LZW アルゴリズムを使用しており、特許権が含まれているため、GD バージョン以降は GIF 形式はサポートされません1.6.2. WINDOWS 環境の場合は、PHP.INI ファイルを入力して extension=php_gd2.dll を見つけ、# を削除して APACHE を再起動するだけです。Linux 環境の場合で、GIF、PNG、およびJPEG の場合は、 libpng 、 zlib、および freetype フォントをダウンロードしてインストールする必要があります。
推奨:
php サーバー以上がphp 変形なしのズーム画像の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。