ホームページ  >  記事  >  バックエンド開発  >  画像アップロード時のPHP圧縮方法

画像アップロード時のPHP圧縮方法

WBOY
WBOYオリジナル
2023-05-06 19:08:061438ブラウズ

モバイルインターネットの急速な発展に伴い、画像処理と送信の重要性がますます高まっています。大きな画像はサーバーのパフォーマンスに影響を与える可能性があり、画像を処理してアップロードするには圧縮方法が必要です。この記事では、PHPを使用してアップロードした画像を圧縮する方法を紹介します。

1. 画像圧縮の必要性

画像圧縮は頻繁に使用されるテクノロジであり、画像の伝送速度を大幅に向上させ、伝送帯域幅を節約できます。もちろん、画像を十分小さなサイズに圧縮すると、ストレージの占有面積と読み込み時間を削減できます。

つまり、要求された画像が大きすぎると、ページの読み込み速度が遅くなる可能性があります。圧縮を使用して画像を処理すると、ページの読み込み速度が大幅に向上します。

2. PHP の画像圧縮方法

PHP には画像を処理するための一連の関数が用意されており、ユーザーはこれらの関数を使用して画像を圧縮することができます。一般的に使用される画像処理関数は次のとおりです。

imagecreatefromjpeg //从JPEG格式的文件或URL创建一个新的图像
imagesx //获取图像宽度
imagesy //获取图像高度
imagecopyresampled //重采样拷贝部分图像并调整大小,这里用来调整大小和压缩图像
imagejpeg //经过压缩后将图像输出到浏览器或文件,这里用来输出图像

上記の描画関数を呼び出すと、画像を圧縮してアップロードできます。

3. PHP 画像アップロード方法

画像処理関数と同様に、PHP にはファイル アップロードのための関数もいくつか用意されています。一般的なファイル アップロード関数は次のとおりです。

move_uploaded_file //将上传文件移到新位置
$_FILES //包含关于上传文件的信息

ユーザーがファイルをアップロードするとき、move_uploaded_file 関数を使用してファイルを指定されたディレクトリに移動し、$_FILES 配列を使用してアップロードされたファイル情報にアクセスします。次のコードを使用して、基本的なファイル アップロード機能を完了します:

if(move_uploaded_file($_FILES["file"]["tmp_name"], $upload_dir)){
    echo "文件上传成功!";
} else{
    echo "文件上传失败!";
}

IV. PHP 画像圧縮とアップロードの包括的な例

以下は、アップロードされた画像ファイルを指定されたファイルに圧縮するための基本的な PHP スクリプトです。サイズを指定してサーバー上のアップロード ディレクトリにアップロードします。

<?php
    //上传文件夹
    $upload_dir = "uploads/";
    //生成唯一的文件名
    $filename = md5(date('YmdHis')).'.jpg';
    //压缩后的图片质量
    $quality = 50;

    //上传的图像信息
    $temp = $_FILES['file']['tmp_name'];
    $img_info = getimagesize($temp);
    $img_type = $img_info[2];

    //使用不同的函数加载图像
    switch($img_type){
        case 1: $img = imagecreatefromgif($temp); break;
        case 2: $img = imagecreatefromjpeg($temp); break;
        case 3: $img = imagecreatefrompng($temp); break;
    }

    //缩略图尺寸限制,如果长或宽超出,则自动按比例缩小成这个宽度或高度
    $width_limit = 720;
    $height_limit = 480;
    $width = imagesx($img);
    $height = imagesy($img);
    if($width > $width_limit || $height > $height_limit){
        if($width/$width_limit > $height/$height_limit){
            $new_width = $width_limit;
            $new_height = round($height/$width* $new_width);
        } else{
            $new_height = $height_limit;
            $new_width = round($width/$height* $new_height);
        }
        $tmp_img = imagecreatetruecolor($new_width,$new_height);
        imagecopyresampled($tmp_img,$img,0,0,0,0,$new_width,$new_height,$width,$height);
        imagedestroy($img);
        $img = $tmp_img;
    }

    //将图像转换成JPEG格式
    imagejpeg($img, $upload_dir.$filename, $quality);
    imagedestroy($img);

    //输出上传成功信息
    echo '{"code":0,"file":"'.$filename.'","msg":"上传成功!"}';

5.結論

上記のPHP関数を利用することで、アップロードした画像ファイルを簡単に圧縮して指定したディレクトリにアップロードすることができます。特にモバイルデバイス上で画像のアップロードと圧縮を扱う場合、PHP を使用してこれらの機能を実装すると非常に便利です。ただし、実際のアプリケーションでは、PHP を使用して画像を処理するには多くの時間とサーバー リソースが必要となるため、サーバーのパフォーマンスとユーザー エクスペリエンスを確保するために画像を適切に制限および最適化する必要があることに注意してください。

以上が画像アップロード時のPHP圧縮方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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