23

ルートフォルダにWordPressをインストールしています。

昨日までは問題なく動作していましたが、今日はサムネイル画像の生成で次のエラーが発生します。

Warning: imagejpeg() [function:imagejpeg]: gd-jpeg: JPEG library reports unrecoverable error: in public_html/wp-includes/media.php on line 459

誰かがこの警告に関して何か考えを持っていますか?

私を助けてください

次のコードは459行目にあります

if ( !imagejpeg( $newimage, $destfilename, apply_filters( 'jpeg_quality', $jpeg_quality, 'image_resize' ) ) )
4

5 に答える 5

35

あなたはおそらくそれから画像を作成しようとしましたが、jpegそうではありませんjpeg

PHPでサムネイルスクリプトをテストしているときに同じエラーが発生しました。png次に、入力ファイルのヘッダーが拡張子であるにもかかわらずであることがわかりました.jpg

そこで、スクリプトを編集して、からのイメージの作成中にエラーが発生した場合に、からイメージjpegを作成しようとするようにしましたpng (またはgif別のエラーが発生した場合)

于 2014-01-10T13:20:28.990 に答える
17

1)ディスクのスペースを確認します

システムには十分なディスク容量が必要です

2)メモリ制限を確認します

PHPにメモリを追加します。

ini_set("memory_limit","256M");

3)post_max_sizeとupload_max_filesizeを確認します

htaccessファイルでさらに設定します。

php_value post_max_size 16M
php_value upload_max_filesize 6M

4)関数の前に@を置きます

@imagejpeg(..............);

ポイント1)私のために働いた。

于 2012-05-19T19:17:53.513 に答える
5

mimeタイプの画像を正しく判別するには、関数を使用する必要があります。拡張子がjpgのpng画像は、このエラーの原因になります。

このエラーを回避するには、正しいmimeタイプの画像を取得する必要があります。

function getImage($path) {
switch(mime_content_type($path)) {
  case 'image/png':
    $img = imagecreatefrompng($path);
    break;
  case 'image/gif':
    $img = imagecreatefromgif($path);
    break;
  case 'image/jpeg':
    $img = imagecreatefromjpeg($path);
    break;
  case 'image/bmp':
    $img = imagecreatefrombmp($path);
    break;
  default:
    $img = null; 
  }
  return $img;
}
于 2017-06-14T07:08:34.247 に答える
4

同じエラーが発生しましたが、同じ問題が解決しました。

答えは:pngをアップロードしており、jpgに変換されます。
jpgで動作することを確認してください。他の機能を使用できるようにpngをjpgに変換する必要があります。同じことを確認してください。

以下のコードは、GDライブラリを使用して画像を変換するのに役立ちます。

//variable declare or parameter use
$originalImage ="1.jpg";
$quality=100; // for jpg good quality
$outputImage;   //for source file save.  


// jpg, png, gif or bmp?
    $exploded = explode('.',$originalImage);
    $ext = $exploded[count($exploded) - 1]; 

    if (preg_match('/jpg|jpeg/i',$ext))
        $imageTmp=imagecreatefromjpeg($originalImage);
    else if (preg_match('/png/i',$ext))
        $imageTmp=imagecreatefrompng($originalImage);
    else if (preg_match('/gif/i',$ext))
        $imageTmp=imagecreatefromgif($originalImage);
    else if (preg_match('/bmp/i',$ext))
        $imageTmp=imagecreatefrombmp($originalImage);
    else
        return 0;

    // quality is a value from 0 (worst) to 100 (best)
    imagejpeg($imageTmp, $outputImage, $quality);
    imagedestroy($imageTmp);
于 2015-06-19T13:15:08.813 に答える
4

PHP7imagecreatefromjpegでは、無効なファイルを開こうとすると致命的なエラーがスローされ始めました。これは、@記号でさえもキャッチできません。

代わりに以下を使用してください。

$im = imagecreatefromstring(file_get_contents($filename));
if ($im !== false) { ... }
于 2018-04-06T07:40:31.710 に答える