2

画像のサイズを動的に変更する PHP スクリプトを作成しています。イメージ ID (MySQL データベースから) は、「http://localhost/getimage/1.htm」のように渡されます。

上記のような URL でスクリプトに直接アクセスすると、画像が完全に吐き出されます。しかし、何らかの理由で (Chrome のみ)、その URL をタグにリンクすると、動作がおかしくなり始めます。ページが最初に読み込まれると、画像は正常に読み込まれますが、読み込みバーが約 5 秒間回転し、突然画像が消え、Chrome に「リソースの読み込みに失敗しました」というエラーが表示されます。

何がこれを引き起こしているのか、もしそうなら、それを止める方法を知っている人はいますか? AdBlocker と関係があるのではないかと思いましたが、それを無効にしましたが、まだ発生しています。

乾杯。

編集:これは私が使用しているコードです:

    header('Content-Type:'.$file['type']);
    header('Content-Length: ' . $file['bytes']);

    // Get size of original image
    list($o_width, $o_height) = getimagesize($file['src']);

    // Default width and height
    if (is_null($width)) {
        $width = $o_width;
    }

    if (is_null($height)) {
        $height = $width;
    }

    // Create image frame
    $image_p = imagecreatetruecolor($width, $height);

    // Generate image depending on source type
    switch ($file['type']) {
        case "image/jpeg":
        default:
            $image = imagecreatefromjpeg($file['src']);
            break;
        case "image/gif":
            $image = imagecreatefromgif($file['src']);
            break;
        case "image/png":
            $image = imagecreatefrompng($file['src']);
            break;
    }

    imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $o_width, $o_height);

    // Output
    imagejpeg($image_p, null, 100);
    exit;

ご覧のとおり、コンテンツ タイプを設定しています。それが htm 拡張子だった場合、混乱を招きますが、画像が正しくロードされてからアンロードされる理由を説明できますか?

4

1 に答える 1

1

これはChromeだけではありませんが、私見では、最初にこれがあるのは間違っています:header('Content-Length:'。$ file ['bytes']); 実際のファイルサイズがわからないため、imagejpeg($ image_p、null、100);を使用してその場で画像を作成するため。header('Content-Length...行をコメントアウトしてみてください。修正される可能性があります。

于 2012-05-01T10:46:44.543 に答える