PHP GD generated image Firefoxにエラーが含まれているため、イメージを表示できません

PHP GD generated image Firefoxにエラーが含まれているため、イメージを表示できません [日本語]

PHPを使用して画像を生成する場合(例えば、画像を保存したサーバにウォーターマークを追加する場合、以下のコードを使用する場合、またはPNGの代わりにJPEGを使用する場合)、画像はまったく生成されず、Firefoxに直接表示されますChromeで

この種のコードは、一部のサーバーで作業していたにもかかわらず、時にはあいまいな理由でいくつかのサーバーで動作する可能性があります。私の場合は、ローカルで完璧に動作しますが、インターネットサーバー上でエラー以下に生成されます。エラーが含まれているため、イメージを表示できません。

問題はいくつかの理由から来ることができます。ここにいくつかあります:

すでに出力が設定されています。

イメージ生成からの真のエラー。

間違った画像タイプが使用されます。

画像ライブラリがインストールされていません。

$stamp = imagecreatefrompng('watermark.png');
if(!$im = imagecreatefrompng('image.png')) die('Error generating image');
$marge_right = $marge_bottom = 10;
$sx = imagesx($stamp);
$sy = imagesy($stamp);

$copyimage = imagecopy($im, $stamp, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp));

header('Content-type: image/png');
if(!imagepng($im)) die('Error generating image');
if(!imagedestroy($im)) die('Error generating image');
if(!imagedestroy($stamp)) die('Error generating image');

以前出力が既に設定されている

たとえ意図的でなくても、たとえば、このエラーを回避するために、他の以前のスクリプトに最後に空白が含まれていたことが考えられます。PHP推奨のように、PHPの終了タグでスクリプトを閉じないでください。

次に、ヘッダー関数を使用する前に、次のコードを使用して、以前に設定されたヘッダーが破棄されていることを確認します

foreach (getallheaders() as $name => $value) {
header_remove($name);
}

また、ヘッダーとイメージの前に出力が生成されていないことを確認するこの関数

ob_end_clean();

これは私の場合の問題を解決し、画像が正しく表示されました。

イメージ生成による真のエラー

画像生成中に実際のエラーが発生した場合は、PHPがすべての種類のエラーを表示するように設定し、対応するログを確認して、それを追跡して解決できるようにしてください。

以下のコードは、PHPがログにすべてのエラーを報告するようにします:

error_reporting(E_ALL);
ini_set('display_errors', '1');

サーバー構成のために出力HTMLに表示されなくても、いくつかのエラーが報告されていることがわかります。

間違った画像タイプが使用されています

使用している画像タイプが正しいことを確認します。たとえば、このコードを使用してpngとjpegを区別します。

また、使用される画像生成関数に応じて、使用される出力に応じてヘッダーが正しいことを確認してください

//to generate png image
header('Content-type: image/png');
if(!imagepng($im)) die('Error generating image');
//to generate jpeg image
header('Content-type: image/jpeg');
if(!imagejpeg($im)) die('Error generating image');

イメージライブラリがインストールされていません

イメージライブラリがインストールされていることを確認する。これを行うには、関数phpinfo()を実行します。 PHP GDに関連するimagepng()のような関数によって使用されるグラフィックスライブラリに関する以下の値の出力を確認してください。

パッケージが見つからない場合は、PEARコマンドを使用してパッケージを追加するか、パッケージインストール用に組み込まれたWebホストを使用して、ローカルの構成に依存します。

imagejpegまたはimagepngが機能していない場合の対処

NotePad ++で、imagepng関数を呼び出すPHPファイルを開き、メニューの[エンコード]> [BOMなしのUTF-8に変換]を選択して保存します。

DreamWeaverで、[ページのプロパティ]> [タイトル/エンコード]> [Unicode署名を含める(BOM)]のチェックを外します。

PHPのimagejpegまたはimagepngが機能していない場合は、おそらくPHPファイルが部品表、部品表でエンコードされているため、画像データの前に追加情報が画像とともに送信されます。

PHPのimagejpeg関数とPHPのimagepng関数は、サーバーの応答でピクチャコードを直接送信するために使用される関数です。

PHP - imagepngが正しく動作しない
PHP - imagepng関数
PHP - imagejpeg関数

フォトギャラリー

PHP GD generated image Firefoxにエラーが含まれているため、イメージを表示できません : エラーFirefoxにエラーが含まれているため画像を表示できません
PHP GD generated image Firefoxにエラーが含まれているため、イメージを表示できません : PHPを使用して動的に生成された画像
PHP GD generated image Firefoxにエラーが含まれているため、イメージを表示できません : phpinfo()関数を使用したPHP GDパッケージの詳細

類似の記事

コメント (6)

Irvin Vasquez, 2018-08-19
Simple, clear and well explained, many thanks
Joyce Lawrence, 2018-08-19
ありがとう、非常に有益な
Catherine Roberts, 2018-08-19
Dokładnie tego, czego szukałem, idealnie
Headlinext, 2018-08-19
जानकारी का महान टुकड़ा, साझा करने के लिए धन्यवाद
Marshel, 2018-08-19
विश्वास नहीं कर सकता कि मुझे अंत में समाधान मिला, यह लंबे समय तक एक दुःस्वप्न था, अब हल हो गया
porcateraC, 2018-08-19
بالضبط ما كنت أبحث عنه ، مثالي

コメントを残す

Ezoicで広告収入を50〜250%増やす。 Google認定発行パートナー。
Ezoicで広告収入を50〜250%増やす。 Google認定発行パートナー。
 
Ezoicで広告収入を50〜250%増やす。 Google認定発行パートナー。
Ezoicで広告収入を50〜250%増やす。 Google認定発行パートナー。