Почему получение изображения через PHP не работает? - PullRequest
0 голосов
/ 07 августа 2010

Я работаю с WampServer версии 2.0 в Windows XP и FireFox 3.6.8.

Я пытаюсь получить изображение с помощью сценария PHP, например:

HTML:

<img src='temp_get_file.php' alt='picture not found' />

PHP: (temp_get_file.php)

<?php
header('Content-Type: image/png');
$img = imagecreatefromjpeg("1.png");
imagejpeg($img);
imagedestroy($img);
?>

Файлы HTML, PHP и 1.png находятся в каталоге www WampServer.

К сожалению, я получил эту ошибку (в плагине HTTPFOX в FireFox):

Error loading content (NS_ERROR_DOCUMENT_NOT_CACHED)

, и я вижу «изображение не найдено».

Если я помещаю изображение вHTML прямо так:

<img src='1.png' alt='picture not found' />

все отлично работает.

Что не так с моим PHP?

Ответы [ 2 ]

5 голосов
/ 07 августа 2010

Это может быть просто проблемой в вашем примере, но это не сработает:

imagecreatefromjpeg("1.png")
                 ^      ^
               JPEG != PNG
1 голос
/ 07 августа 2010

Не с вашим PHP на самом деле, но с вашими навыками PHP:)
Некоторые советуют улучшить

  1. вы должны отлаживать приложение, а не спрашивать сообщество.
    Для этого вам нужно
    а) запросить файл изображения напрямую, введя temp_get_file.php в адресную строку браузера, чтобы вы увидели вывод скрипта
    б) установите вывод заголовка Content-Type как можно ниже в коде, чтобы PHP мог отправлять text / html в случае некоторых ошибок
    в) отображать ошибки на
    или
    вместо всего вышеперечисленного вы можете включить регистрацию ошибок и зафиксировать ошибку в журнале ошибок.
    Оба метода позволят вам получить сообщение об ошибке PHP - вещь, которая вам здесь действительно нужна, вместо бесполезного жалобы Firefox.
    и это сообщение об ошибке довольно ясно - неправильный формат файла.

  2. если ваш скрипт выполняет только одно действие, вам не нужны все эти функции GD. это бесполезно. если вам нужно вывести какой-то файл в браузер, просто сделайте это. readfile("1.png") достаточно

...