画像サムネイルを使用する場合、画像サイズを縮小するだけでなく、特定の視覚効果のニーズを満たすために画像(水平や垂直など)をめくる必要があります。 PHPは2つの非常に実用的な機能を提供します: ImageCopyResampled()とImageFlip()は、それぞれ画像スケーリングと画像のフリッピングに使用されます。ひっくり返して高品質のサムネイルを作りたい場合、これら2つの機能は完全に機能します。
この関数は、画像の一部を別の画像にコピーしてスケーリングするために使用され、高品質の画像スケーリング処理をサポートします。 ImageCopyresized()と比較して、その効果はより繊細で、サムネイルの生成に適しています。
ImageFlip()関数は、画像をひっくり返すために使用され、水平、垂直、および水平 +垂直のフリップを同時にサポートします。この関数は、PHP 5.5以来導入されています。
以下は、元の画像をスケーリングしてサムネイルを生成し、サムネイルを水平にフリップする完全な例です。
<?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);
?>
ImageFlip()を使用する前に、PHPバージョンが5.5より低くないことを確認してください。
画像の割合を維持するために、元の画像のアスペクト比に応じてサムネイルサイズを計算することをお勧めします。
PNG画像を処理している場合は、透明な背景( ImageAlphableending()やImagesAvealpha()を使用するなど)に対処することを忘れないでください。
この処理方法は、eコマースプラットフォーム、ギャラリー、コンテンツ管理システム、その他のシナリオで非常に一般的です。特に、画像プレビューを生成して視覚効果(ミラーなど)を追加する必要がある場合、 ImageFlip()とImageCopyResampled()の組み合わせは、開発効率と画質を大幅に改善できます。
この記事の説明を通して、簡単に把握できます