ホームページ > バックエンド開発 > PHPチュートリアル > PHP 画像処理: imagecopyresampled 関数を使用した画像スケーリングの例

PHP 画像処理: imagecopyresampled 関数を使用した画像スケーリングの例

高洛峰
リリース: 2023-03-04 09:38:01
オリジナル
1415 人が閲覧しました

ウェブサイトの最適化はコードだけに焦点を当てることはできません。コンテンツもウェブサイトの最も重要なオブジェクトの 1 つであり、画像はウェブサイト上で最も重要なコンテンツです。画像を最適化するときに対処する最も重要なことは、Web サイトにアップロードされたすべての大きな画像を自動的に小さな画像 (Web ページに十分なサイズ) に拡大縮小して、ストレージ容量を N 倍に削減し、速度を向上させることです。ダウンロードと閲覧。したがって、画像を動的 Web サイトに拡大縮小するタスクは、多くの場合、ファイルのアップロードに関連付けられており、画像のアップロード中にサイズ変更される可能性があります。もちろん、場合によっては画像のスケーリングを個別に処理する必要があります。たとえば、画像リストを作成するときに、大きな画像を直接使用し、表示されるときにのみ小さな画像にズームすると、ダウンロードが遅くなるだけではありません。速度は向上しますが、ページの応答時間も短縮されます。通常、このようなアプリケーションに遭遇すると、写真をアップロードするときに、リストを作成するために特別に使用される小さなアイコンが写真に合わせて拡大縮小され、この小さなアイコンをクリックすると、大きな写真がダウンロードされて閲覧できます。

GD ライブラリを使用して画像のスケーリングを処理するには、通常、imagecopyresize() と imagecopyresampled() の 2 つの関数のいずれかが使用されます。imagecopyresampled() 関数を使用した後の品質は向上します。ここでは、imagecopyresampled() 関数の使用方法のみを紹介します。この関数のプロトタイプは次のようになります:

  bool imagecopyresampled(resource dst_image,resource src_image,int dst_x,int dst_y,int src_x,int src_y,int dst_w,int dst_h ,int src_w,int src_h)
ログイン後にコピー

この関数は、ある画像から別の画像に正方形の領域をコピーし、ピクセル値を滑らかに補間することで、非常に高い解像度を維持しながら画像のサイズを縮小します。成功した場合は TRUE を返し、失敗した場合は FALSE を返します。パラメータ dst_image と src_image は、それぞれターゲット イメージとソース イメージの識別子です。ソースとターゲットの幅と高さが異なる場合、画像はそれに応じて縮小および拡大され、座標は左上隅を参照します。この関数は、同じイメージ内でコピーするために使用できます (dst_image と src_image が同じ場合) が、領域が重なっている場合、結果は予測できません。次の例では、JPEG 画像形式を例として、画像スケーリング関数 summ() を記述します。コードは次のとおりです:

<?php
    //用于对图片进行缩放
    function thumb($filename,$width=200,$height=200){
        //获取原图像$filename的宽度$width_orig和高度$height_orig
        list($width_orig,$height_orig) = getimagesize($filename);
        //根据参数$width和$height值,换算出等比例缩放的高度和宽度
        if ($width && ($width_orig<$height_orig)){
            $width = ($height/$height_orig)*$width_orig;
        }else{
            $height = ($width / $width_orig)*$height_orig;
        }
 
        //将原图缩放到这个新创建的图片资源中
        $image_p = imagecreatetruecolor($width, $height);
        //获取原图的图像资源
        $image = imagecreatefromjpeg($filename);
 
        //使用imagecopyresampled()函数进行缩放设置
        imagecopyresampled($image_p,$image,0,0,0,0,$width,$height,$width_orig,$height_orig);
 
        //将缩放后的图片$image_p保存,100(质量最佳,文件最大)
        imagejpeg($image_p,$filename);
 
        imagedestroy($image_p);
        imagedestroy($image);
    }
 
    thumb("brophp.jpg",100,100);
?>
ログイン後にコピー

imagecopyresampled 関数を使用した画像スケーリングの PHP 画像処理の例については、次の点に注意してください。 PHP中国語関連記事ならネット!

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