ホームページ > バックエンド開発 > PHPの問題 > PHPで歪みなく画像を圧縮する方法

PHPで歪みなく画像を圧縮する方法

王林
リリース: 2023-05-06 18:26:07
オリジナル
1977 人が閲覧しました

インターネット技術の発展に伴い、画像は Web デザインに不可欠な要素になりましたが、それに伴い読み込み速度の問題が生じます。 Webページを高速化するには画像を圧縮する必要がありますが、圧縮処理により画像の歪みが発生しやすく、より高度な技術が必要となります。この記事では、PHPを使用して画像を歪みなく圧縮する方法を紹介します。

1. PHP の GD ライブラリの使用

PHP の GD ライブラリは、拡大縮小、切り抜き、回転、透かしなどのさまざまなグラフィック操作を処理するために使用できる一般的に使用されるグラフィック ライブラリです。このライブラリを活用することで、画像を歪みなく指定したサイズに圧縮できます。 PHP の GD ライブラリを画像圧縮に使用する方法を見てみましょう。

まず、PHP に GD ライブラリがインストールされていることを確認してください。インストールされていない場合は、次のコマンドを使用してインストールできます:

sudo apt-get install php-gd
ログイン後にコピー

インストール後、イメージを圧縮するコードを作成できます。まず、画像をロードする必要があります:

<?php
// 加载原图片
$src_file = 'source.jpg';
$image = imagecreatefromjpeg($src_file);
?>
ログイン後にコピー

次に、圧縮画像サイズを指定する必要があります:

<?php
// 加载原图片
$src_file = 'source.jpg';
$image = imagecreatefromjpeg($src_file);

// 指定压缩后的图片大小
$max_width = 600;
$max_height = 400;
?>
ログイン後にコピー

次に、画像の実際のサイズと圧縮率を計算する必要があります:

<?php
// 加载原图片
$src_file = 'source.jpg';
$image = imagecreatefromjpeg($src_file);

// 指定压缩后的图片大小
$max_width = 600;
$max_height = 400;

// 计算出图片的实际大小及压缩比例
$width = imagesx($image);
$height = imagesy($image);
$scale = min($max_width/$width, $max_height/$height, 1);

// 计算出压缩后的大小
$new_width = round($scale*$width);
$new_height = round($scale*$height);
?>
ログイン後にコピー

これで、画像の実際のサイズと圧縮率がすでにわかりました。次のステップは、画像を指定したサイズに圧縮することです:

<?php
// 加载原图片
$src_file = 'source.jpg';
$image = imagecreatefromjpeg($src_file);

// 指定压缩后的图片大小
$max_width = 600;
$max_height = 400;

// 计算出图片的实际大小及压缩比例
$width = imagesx($image);
$height = imagesy($image);
$scale = min($max_width/$width, $max_height/$height, 1);

// 计算出压缩后的大小
$new_width = round($scale*$width);
$new_height = round($scale*$height);

// 创建新图片
$new_image = imagecreatetruecolor($new_width, $new_height);

// 复制原图片到新图片并压缩
imagecopyresampled($new_image, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

// 保存压缩后的图片
imagejpeg($new_image, 'compressed.jpg', 90);
?>
ログイン後にコピー

最後のステップは、圧縮されたファイルを保存することです。ここでは imagejpeg() を使用します この関数は JPEG 形式で保存され、3 番目のパラメータは圧縮品質で、値が大きいほど高品質になり、ファイルが大きくなります。

2. サードパーティ ライブラリを使用する: TinyPNG

PHP の GD ライブラリを圧縮に使用することに加えて、操作にいくつかのサードパーティ ライブラリを使用することもできます。その中でも非常に優れた圧縮画像ライブラリが TinyPNG です。 JPEG、PNG、その他の画像を歪みなく最小サイズに圧縮できます。

まず、TinyPNG の公式 Web サイトに登録し、API キーを生成する必要があります。その後、API を通じて直接画像を圧縮できます。以下は、画像圧縮に TinyPNG を使用するためのコードです:

<?php
require_once 'vendor/autoload.php';

// 指定图片路径
$file = 'source.jpg';

// 压缩图片并保存
\Tinify\setKey("YOUR_API_KEY");
\Tinify\fromFile($file)->toFile('compressed.jpg');
?>
ログイン後にコピー

ここでは、公式に提供されている PHP SDK を使用し、コード内で API キーを指定します。その後、fromFile() メソッドを使用して画像をロードできます。圧縮の場合、toFile() メソッドは圧縮されたイメージを指定されたパスに保存します。

概要

画像圧縮に PHP の GD ライブラリを使用する場合でも、サードパーティのライブラリである TinyPNG を使用する場合でも、画像ファイルのサイズを可能な限り削減し、Web サイトの読み込み速度を向上させることができます。画質。 。実際のプロジェクトでは、具体的な状況に応じて選択し、柔軟に使用する必要があります。画像圧縮を適切に行うと、Web ページのパフォーマンスが向上するだけでなく、ユーザーのアクセス エクスペリエンスも向上します。

以上がPHPで歪みなく画像を圧縮する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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