PHPを使用して画像を処理する場合、 ImageColorresolve()は、特定の色のインデックス値を返す一般的に使用される関数です。色がすでにパレットに存在する場合、既存のインデックスが返されます。そうしないと、色がパレットに追加されます。しかし、時には、そのようなエラーメッセージに遭遇します。
Warning: imagecolorresolve(): supplied resource is not a valid gd image resource
このエラーは、ImageColorresolve()に渡された最初のパラメーターが有効なGD画像リソースではないことを意味します。では、どのようにそれを調査して解決する必要がありますか?この記事では詳細に説明します。
最も一般的な問題は、 ImageCreatefromJpeg()やImageCreateFrommpng()などの関数を呼び出すなど、画像リソースがまったく正しく作成されないことです。
エラーコードの例:
<?php
$img = imagecreatefromjpeg('https://m66.net/uploads/sample.jpg');
$color = imagecolorresolve($img, 255, 0, 0);
?>
パス'https://m66.net/uploads/sample.jpg'がアクセスできないか、有効なjpeg画像ではない場合、 imagecreatefromjpeg()は画像リソースの代わりにfalseを返します。
解決策:チェックを追加して、 $ IMGが有効なリソースであることを確認します。
正しい書き込み:
<?php
$img = imagecreatefromjpeg('https://m66.net/uploads/sample.jpg');
if (!$img) {
die('画像の読み込みに失敗しました,画像パスかフォーマットが正しいかを確認してください。');
}
$color = imagecolorresolve($img, 255, 0, 0);
?>
パスが誤って書かれている場合、またはファイルが存在しない場合、画像リソースを作成できないことにもつながります。
提案:
file_exists()を使用して、最初にローカルファイルを確認します。
リモート画像の場合は、 get_headers()を使用して、URLが有効かどうかを確認します。
例:
<?php
$url = 'https://m66.net/uploads/sample.jpg';
$headers = get_headers($url, 1);
if (strpos($headers[0], '200') === false) {
die('リモート画像は存在しないか、アクセスできない。');
}
$img = imagecreatefromjpeg($url);
if (!$img) {
die('画像リソースを作成できません。');
}
$color = imagecolorresolve($img, 255, 0, 0);
?>
ImageColorresolve()は、PHPのGDライブラリ機能に属します。 PHP環境がGD拡張機能をインストールまたは有効にしない場合、コードが問題なく記述されていても、エラーが発生します。
解決:
phpinfo()をチェックして、GDモジュールが有効になっているかどうかを確認します。
有効になっていない場合、Linuxシステムは次のコマンドを実行してインストールできます。
sudo apt-get install php-gd
sudo service apache2 restart
Windowsシステムは、 php.iniファイルにある必要があります。拡張子= gd 、以前のセミコロンを削除してサーバーを再起動します。
ロジックの問題により、画像リソースが事前に破壊される場合があります。たとえば、 Imagedestroy()は誤って呼ばれているため、無効なリソースの着信にもつながります。
エラーの例:
<?php
$img = imagecreate(100, 100);
imagedestroy($img); // 破壊された!
$color = imagecolorresolve($img, 255, 0, 0); // エラーを報告します
?>
ImageColorresolve()が呼び出されるまで、画像リソースがまだ有効であることを確認してください。
供給されたリソースによってエラーが報告される場合、有効なGD画像リソースではない場合、トラブルシューティングの順序は次のとおりです。
画像リソースが正常に作成されていることを確認してください。
ファイルパスまたはリモートURLが正しいことを確認してください。
PHP環境がインストールされ、GD拡張機能に有効になっていることを確認してください。
コードロジックを確認して、リソースの破壊を事前に避けてください。
各ステップにチェックを意識的に追加する限り、これらのエラーのほとんどは簡単に回避できます。