現在の位置: ホーム> 最新記事一覧> Flip + Compress +保存:完全な画像処理フロー

Flip + Compress +保存:完全な画像処理フロー

M66 2025-05-17

毎日の開発では、画像処理は画像フリップ(ミラー)、圧縮画像サイズ、最適化された画像の保存など、非常に一般的な要件です。PHPでは、組み込みのGDライブラリを使用してこれらの機能を簡単に実装できます。

この記事では、PHPを介した画像フリップ、圧縮、保存の処理フローを完全に把握するために、段階的に説明します。画像アップロードインターフェイスを開発している場合でも、画像管理システムを構築している場合でも、この記事は実用的な参照を提供できます。

1。準備:GDライブラリが有効になっているかどうかを確認します

まず、サーバーにGDライブラリが有効になっていることを確認してください。 GDライブラリがPHPでサポートされているかどうかを確認してください。

 <?php
if (extension_loaded('gd')) {
    echo "GD ライブラリが有効になっています";
} else {
    echo "インストールして有効にしてください GD 図書館";
}
?>

2。画像の読み込み

JPEG画像を例として使用して、画像ファイルをロードしましょう。

 <?php
$imagePath = 'uploads/sample.jpg';
$image = imagecreatefromjpeg($imagePath);
if (!$image) {
    die('画像のロードに失敗しました');
}
?>

3。画像フリップ(水平/垂直ミラーリング)

水平フリップ(ミラー)

 <?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); // 垂直にひっくり返した場合の解除
?>

IV。画像圧縮

通常、画像圧縮とは、保存されたときに画像の品質を調整することを指します。 JPEG画像の場合、保存中に圧縮品質を設定できます(0-100):

 <?php
$compressedPath = 'uploads/compressed.jpg';
$quality = 75; // 値が小さくなります,圧縮が高いほど,画質が低いほど

if (!imagejpeg($image, $compressedPath, $quality)) {
    die('画像を圧縮して保存できませんでした');
}
?>

5。処理された画像リンクを保存して出力します

圧縮と保存が成功した後、画像アクセスリンクを指定できます。たとえば、:

 <?php
echo '画像処理が成功しました,リンクにアクセスしてください:<a href="https://m66.net/uploads/compressed.jpg">クリックして画像を表示します</a>';
?>

6.完全なカプセル化コード(添付)

また、プロセス全体を関数にカプセル化して、再利用性を向上させることもできます。

 <?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);
}
?>

7。概要

PHPのGDライブラリを使用すると、以下を含む画像を非常に柔軟に処理できます。

  • 画像ファイルをロードします。

  • フリップ(水平/垂直);

  • 圧縮して保存します。

  • 出力処理結果。

このプロセスは、ほとんどのWebアプリケーションシナリオ、特にユーザーが画像をアップロードした後に最適化する必要がある関数に適しています。

収集、透かし、サイズの調整など、画像処理のニーズがさらに必要な場合は、GDライブラリも有能であり、将来的にはより高度な画像処理記事も提供します。お楽しみに!