毎日の開発では、画像処理は画像フリップ(ミラー)、圧縮画像サイズ、最適化された画像の保存など、非常に一般的な要件です。PHPでは、組み込みのGDライブラリを使用してこれらの機能を簡単に実装できます。
この記事では、PHPを介した画像フリップ、圧縮、保存の処理フローを完全に把握するために、段階的に説明します。画像アップロードインターフェイスを開発している場合でも、画像管理システムを構築している場合でも、この記事は実用的な参照を提供できます。
まず、サーバーにGDライブラリが有効になっていることを確認してください。 GDライブラリがPHPでサポートされているかどうかを確認してください。
<?php
if (extension_loaded('gd')) {
echo "GD ライブラリが有効になっています";
} else {
echo "インストールして有効にしてください GD 図書館";
}
?>
JPEG画像を例として使用して、画像ファイルをロードしましょう。
<?php
$imagePath = 'uploads/sample.jpg';
$image = imagecreatefromjpeg($imagePath);
if (!$image) {
die('画像のロードに失敗しました');
}
?>
<?php
function flipImageHorizontally($image) {
$width = imagesx($image);
$height = imagesy($image);
$flipped = imagecreatetruecolor($width, $height);
for ($x = 0; $x < $width; $x++) {
imagecopy($flipped, $image, $width - $x - 1, 0, $x, 0, 1, $height);
}
return $flipped;
}
$image = flipImageHorizontally($image);
?>
<?php
function flipImageVertically($image) {
$width = imagesx($image);
$height = imagesy($image);
$flipped = imagecreatetruecolor($width, $height);
for ($y = 0; $y < $height; $y++) {
imagecopy($flipped, $image, 0, $height - $y - 1, 0, $y, $width, 1);
}
return $flipped;
}
// $image = flipImageVertically($image); // 垂直にひっくり返した場合の解除
?>
通常、画像圧縮とは、保存されたときに画像の品質を調整することを指します。 JPEG画像の場合、保存中に圧縮品質を設定できます(0-100):
<?php
$compressedPath = 'uploads/compressed.jpg';
$quality = 75; // 値が小さくなります,圧縮が高いほど,画質が低いほど
if (!imagejpeg($image, $compressedPath, $quality)) {
die('画像を圧縮して保存できませんでした');
}
?>
圧縮と保存が成功した後、画像アクセスリンクを指定できます。たとえば、:
<?php
echo '画像処理が成功しました,リンクにアクセスしてください:<a href="https://m66.net/uploads/compressed.jpg">クリックして画像を表示します</a>';
?>
また、プロセス全体を関数にカプセル化して、再利用性を向上させることもできます。
<?php
function processImage($inputPath, $outputPath, $flipType = 'horizontal', $quality = 80) {
$image = imagecreatefromjpeg($inputPath);
if (!$image) return false;
if ($flipType === 'horizontal') {
$image = flipImageHorizontally($image);
} elseif ($flipType === 'vertical') {
$image = flipImageVertically($image);
}
return imagejpeg($image, $outputPath, $quality);
}
?>
PHPのGDライブラリを使用すると、以下を含む画像を非常に柔軟に処理できます。
画像ファイルをロードします。
フリップ(水平/垂直);
圧縮して保存します。
出力処理結果。
このプロセスは、ほとんどのWebアプリケーションシナリオ、特にユーザーが画像をアップロードした後に最適化する必要がある関数に適しています。
収集、透かし、サイズの調整など、画像処理のニーズがさらに必要な場合は、GDライブラリも有能であり、将来的にはより高度な画像処理記事も提供します。お楽しみに!