ホームページ  >  記事  >  バックエンド開発  >  PHPを使用してリモート画像を保存するときに画像を圧縮するにはどうすればよいですか?

PHPを使用してリモート画像を保存するときに画像を圧縮するにはどうすればよいですか?

WBOY
WBOYオリジナル
2023-07-14 14:45:10843ブラウズ

PHP を使用してリモート画像を保存するときに画像を圧縮するにはどうすればよいですか?

Web 開発では、多くの場合、リモート画像をローカル サーバーに保存する必要があります。ただし、画像を保存する過程で、画像ファイルのサイズを削減し、ストレージ容量を節約し、Web サイトの読み込み速度を向上させるために、画像を圧縮する必要がある場合があります。この記事では、PHPを使用してリモート画像を保存し、圧縮する方法を紹介します。

始める前に、サーバーで php-gd 拡張機能が有効になっていることを確認する必要があります。php-gd 拡張機能は、PHP が画像を処理するための基本的な拡張機能です。サーバーに php-gd 拡張機能がインストールされていない場合は、最初にそれをインストールする必要があります。

まず、リモート イメージのコンテンツを取得し、ローカルに保存する必要があります。 file_get_contents() 関数を使用して、リモート イメージのバイナリ データを取得できます。以下はサンプル コードです。

// 获取远程图片的二进制数据
$data = file_get_contents('http://example.com/image.jpg');

// 保存图片到本地
file_put_contents('local_image.jpg', $data);

上記のコードは、file_get_contents() 関数を通じてリモート アドレスから画像のバイナリ データを取得し、file_put_contents() 関数を使用してバイナリ データをファイルとして保存します。ローカルイメージファイル。

次に、PHP の GD ライブラリを使用して画像を圧縮する必要があります。 GD ライブラリは、拡大縮小、トリミング、回転など、画像を処理するための一連の関数を提供します。 imagecreatefromjpeg() 関数を使用して画像を GD 画像オブジェクトとしてロードし、imagejpeg() 関数を使用して画像を JPEG 形式で保存できます。

// 压缩图片
function compressImage($source, $destination, $quality) {
    // 打开源图像
    $image = imagecreatefromjpeg($source);
    
    // 保存为JPEG格式,同时设定质量
    imagejpeg($image, $destination, $quality);
    
    // 释放图像资源
    imagedestroy($image);
}

// 原图路径
$source = 'local_image.jpg';
// 压缩后的图路径
$destination = 'compressed_image.jpg';
// 压缩质量,0-100,值越大质量越好,文件越大
$quality = 80;

// 压缩图片
compressImage($source, $destination, $quality);

上記のコードは、ソース イメージ パス、ターゲット イメージ パス、圧縮品質の 3 つのパラメーターを受け入れる compressImage() 関数を定義します。関数内では、imagecreatefromjpeg() 関数を使用してソース画像を GD 画像オブジェクトとして読み込み、imagejpeg() 関数を使用して画像を指定された圧縮品質の JPEG 形式画像として保存します。最後に、imagedestroy() 関数を使用して画像リソースを解放します。

上記のコードでは、圧縮品質を変更して画像圧縮の程度を制御できます。圧縮品質の範囲は 0 ~ 100 で、値が大きいほど画質は向上しますが、ファイル サイズは大きくなります。

最後に、compressImage() 関数を呼び出して、リモート画像を保存および圧縮できます。以下に完全な例を示します。

// 获取远程图片的二进制数据
$data = file_get_contents('http://example.com/image.jpg');
// 保存图片到本地
file_put_contents('local_image.jpg', $data);

// 压缩图片
function compressImage($source, $destination, $quality) {
    // 打开源图像
    $image = imagecreatefromjpeg($source);
    
    // 保存为JPEG格式,同时设定质量
    imagejpeg($image, $destination, $quality);
    
    // 释放图像资源
    imagedestroy($image);
}

// 原图路径
$source = 'local_image.jpg';
// 压缩后的图路径
$destination = 'compressed_image.jpg';
// 压缩质量,0-100,值越大质量越好,文件越大
$quality = 80;

// 压缩图片
compressImage($source, $destination, $quality);

上記のコード例では、リモート イメージをローカルに保存し、compressImage() 関数を呼び出して圧縮します。最終的な圧縮イメージは、compressed_image.jpg ファイルとして保存されます。

PHP の GD ライブラリを使用すると、保存されたリモート画像を簡単に圧縮して、Web サイトのパフォーマンスとユーザー エクスペリエンスを向上させることができます。

以上がPHPを使用してリモート画像を保存するときに画像を圧縮するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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