PHPのImageFlip()関数を使用する場合、一部の開発者は関数の「無効」の問題に遭遇する可能性があります。つまり、コール後に画像が変更されないようには見えないか、プログラムをまったく実行できません。この場合、最も一般的な質問は次のとおりです。
この記事では、ImageFlip()がいくつかの観点から無効になり、ソリューションを提供する理由を分析します。
ImageFlip()は、PHPによって提供される関数で、画像を水平、垂直、または斜めにフリップします。この関数はPHP 5.5.0で導入され、その基本的な構文は次のとおりです。
bool imageflip(GdImage $image, int $mode)
ここで、 $モードは次の定数のいずれかになります。
IMG_FLIP_HORIZONTAL - 水平フリップ
img_flip_vertical - 垂直フリップ
IMG_FLIP_BOTH - 水平および垂直に同時にフリップ(180度の回転に相当)
ImageFlip()は、 PHP 5.5.0以降に導入されました。この関数を以前のバージョン(PHP 5.3や5.4など)で使用する場合、エラーを直接報告するか、機能がまったく存在しません。
解決:
現在のPHPバージョンを確認してください:
php -v
バージョンが5.5未満の場合は、PHPを5.5以上にアップグレードしてください。 PHP 7.xまたは8.xを使用することをお勧めします。
ImageFlip()は、基本的にGD画像リソースに作用します。したがって、画像形式をImageCreateFromXxx()で正常にロードできない場合、その後のImageFlip()操作は自然に無効になります。
一般的なエラー:
WebP、HEICなどのGDでサポートされていない形式が使用されます。
画像パスが間違っているか、権限が不十分です。
間違った関数を使用して、JPEGのImageCreateFrommpng()などの画像をロードしました。
サンプルコード(JPEG画像用):
<?php
$imagePath = 'https://m66.net/images/sample.jpg';
$image = imagecreatefromjpeg($imagePath);
if ($image === false) {
die('画像の読み込みに失敗しました,画像形式とパスが正しいかどうかを確認してください。');
}
imageflip($image, IMG_FLIP_HORIZONTAL);
// ブラウザに写真を出力します
header('Content-Type: image/jpeg');
imagejpeg($image);
imagedestroy($image);
?>
ImageFlip()が実際に有効になることがありますが、画像はブラウザによってキャッシュされるため、古い画像はページを更新した後も表示され、「機能は有効ではない」という幻想を人々に与えます。
解決:
https://m66.net/images/flip.php?t= <?= time()?>など、画像リンクにタイムスタンプパラメーターを使用して強制リフレッシュしてください。
PHP出力ヘッダーにアンチキャッシュ命令を追加します。
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 1 Jan 2000 00:00:00 GMT");
要約すると、 ImageFlip()関数の無効性の理由には、低PHPバージョン、互換性のない画像形式、間違ったパスまたはアクセス許可、さらにはブラウザキャッシュによって引き起こされる錯覚が含まれます。開発中、バージョンを確認し、画像の読み込み関数をデバッグし、ログを追加します。
コード環境がGDライブラリをサポートし、画像を正しくロードすることを確認した後、 ImageFlip()関数は通常適切に機能します。まだ不確実なコードがある場合は、投稿できます。表示するのに役立ちます。