現在の位置: ホーム> 最新記事一覧> ImageFlip()とImageCopyResampled()を組み合わせて、サムネイルを作成します

ImageFlip()とImageCopyResampled()を組み合わせて、サムネイルを作成します

M66 2025-05-31

画像サムネイルを使用する場合、画像サイズを縮小するだけでなく、特定の視覚効果のニーズを満たすために画像(水平や垂直など)をめくる必要があります。 PHPは2つの非常に実用的な機能を提供します: ImageCopyResampled()ImageFlip()は、それぞれ画像スケーリングと画像のフリッピングに使用されます。ひっくり返して高品質のサムネイルを作りたい場合、これら2つの機能は完全に機能します。

1。2つのコア関数を理解します

ImageCopyResampled()

この関数は、画像の一部を別の画像にコピーしてスケーリングするために使用され、高品質の画像スケーリング処理をサポートします。 ImageCopyresized()と比較して、その効果はより繊細で、サムネイルの生成に適しています。

ImageFlip()

ImageFlip()関数は、画像をひっくり返すために使用され、水平、垂直、および水平 +垂直のフリップを同時にサポートします。この関数は、PHP 5.5以来導入されています。

2。実際の例:フリップされた高品質のサムネイルを作成します

以下は、元の画像をスケーリングしてサムネイルを生成し、サムネイルを水平にフリップする完全な例です。

 <?php
// 元の画像パス
$sourcePath = 'https://m66.net/uploads/sample.jpg';

// 画像情報を取得します
list($width, $height, $type) = getimagesize($sourcePath);

// 画像リソースを作成します
switch ($type) {
    case IMAGETYPE_JPEG:
        $sourceImage = imagecreatefromjpeg($sourcePath);
        break;
    case IMAGETYPE_PNG:
        $sourceImage = imagecreatefrompng($sourcePath);
        break;
    case IMAGETYPE_GIF:
        $sourceImage = imagecreatefromgif($sourcePath);
        break;
    default:
        die('サポートされていない画像タイプ');
}

// サムネイルサイズ
$newWidth = 150;
$newHeight = intval($height * $newWidth / $width);

// ターゲット画像リソースを作成します
$thumbImage = imagecreatetruecolor($newWidth, $newHeight);

// 高品質のスケーリング
imagecopyresampled($thumbImage, $sourceImage, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);

// フリップサムネイル(水平フリップ)
imageflip($thumbImage, IMG_FLIP_HORIZONTAL);

// ブラウザまたは保存への出力
header('Content-Type: image/jpeg');
imagejpeg($thumbImage);

// リソースを破壊します
imagedestroy($sourceImage);
imagedestroy($thumbImage);
?>

3。注意すべきことがいくつかあります

  • ImageFlip()を使用する前に、PHPバージョンが5.5より低くないことを確認してください。

  • 画像の割合を維持するために、元の画像のアスペクト比に応じてサムネイルサイズを計算することをお勧めします。

  • PNG画像を処理している場合は、透明な背景( ImageAlphableending()ImagesAvealpha()を使用するなど)に対処することを忘れないでください。

4。実用的なアプリケーションシナリオ

この処理方法は、eコマースプラットフォーム、ギャラリー、コンテンツ管理システム、その他のシナリオで非常に一般的です。特に、画像プレビューを生成して視覚効果(ミラーなど)を追加する必要がある場合、 ImageFlip()ImageCopyResampled()の組み合わせは、開発効率と画質を大幅に改善できます。

この記事の説明を通して、簡単に把握できます