PHPでは、 ImageFlip()関数は、画像を反転するための便利なツールです。画像を水平に、垂直に、またはその両方にひっくり返すことができます。これは、ミラー効果、画像補正などの作成などの画像処理タスクに非常に役立ちますが、より深く見て、画像のピクセルポイントをどのように正確に変更しますか?この記事では、例とイラストを通じてその特定の影響を明らかにします。
ImageFlip()はPHP GDライブラリの一部であり、画像をひっくり返すために使用されます。関数プロトタイプは次のとおりです。
bool imageflip(GdImage $image, int $mode)
$画像がターゲット画像リソースである場合、 $モードはフリップモードであり、サポートされている定数は次のとおりです。
IMG_FLIP_HORIZONTAL :水平フリップ(左から右)
IMG_FLIP_VERTICAL :垂直方向にフリップ(上から下まで)
IMG_FLIP_BOTH :水平および垂直に同時にフリップします
画像を作成し、フリップし、フリップの前後にピクセルの変更を確認する方法の簡単な例を次に示します。
<?php
// シンプルな画像リソースを作成します (3x3ピクセル)
$image = imagecreatetruecolor(3, 3);
// 充填色は区別するのに便利です
$colors = [
imagecolorallocate($image, 255, 0, 0), // 赤
imagecolorallocate($image, 0, 255, 0), // 緑
imagecolorallocate($image, 0, 0, 255), // 青
];
// 设置ピクセル点(2次元マトリックスと見なすことができます)
imagesetpixel($image, 0, 0, $colors[0]); // 左上
imagesetpixel($image, 2, 0, $colors[1]); // 右上
imagesetpixel($image, 1, 2, $colors[2]); // 中央と下
// 输出翻转前的ピクセル颜色(デバッグ用)
function printPixelColors($img) {
for ($y = 0; $y < imagesy($img); $y++) {
for ($x = 0; $x < imagesx($img); $x++) {
$rgb = imagecolorat($img, $x, $y);
$colors = imagecolorsforindex($img, $rgb);
echo "($x,$y): R={$colors['red']} G={$colors['green']} B={$colors['blue']}\n";
}
}
echo "----\n";
}
echo "翻转前ピクセル:\n";
printPixelColors($image);
// 水平フリップを実行します
imageflip($image, IMG_FLIP_HORIZONTAL);
echo "水平翻转后ピクセル:\n";
printPixelColors($image);
// 出力フリップ画像をファイルします
imagepng($image, 'https://m66.net/output/flipped_image.png');
imagedestroy($image);
?>
元の画像の左上隅が赤いピクセル(0,0)であり、右上隅が緑のピクセル(2,0)であると仮定すると、水平方向にひっくり返した後、位置を調整します。つまり、赤は(2,0)に移動し、緑は(0,0)に移動します。中央の下の青色(1,2)も対称的な位置(1,2)になります(水平方向に反転すると垂直方向の位置が変わらないため、位置は変わらないままです)。
視覚的な理解は、鏡の前で画像全体を調整することです。
画像ミラーリング効果:写真を撮るときに画像のプレビューに使用できます
画像補正:一部の画像キャプチャデバイスは、反転した画像を保存し、 ImageFlip()によって修正できます。
画像データの増強:機械学習モデルのトレーニング時に、フリップされた画像がデータの多様性を高めることができます
PHPのImageFlip()にはGDライブラリサポートが必要です(PHP 5.5.0+は組み込まれています)
フリップ操作は、元の画像リソースを直接変更し、新しいリソースを返さない。