Изображение не может быть показано так как содержит ошибки php

Why is this code not working ?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>

        <title></title>
    </head>
    <body>
        <?php
        header('Content-type: image/png');
        $myImage = imagecreate(200, 100);
        $myGray = imagecolorallocate($myImage, 204, 204, 204);
        $myBlack = imagecolorallocate($myImage, 0, 0, 0);
        imageline($myImage, 15, 35, 120, 60, $myBlack);

        imagepng($myImage);
        imagedestroy($myImage);
        ?>
    </body>
</html>

I always get error The image cannot be displayed because it contains errors.. I’ve already enabled php_gd2.dll and memory_limit in php.ini is also 128M. If i remove header('Content-type: image/png'); i don’t get the error but i don’t see the image either. All i see is this :-

‰PNG ��� IHDR���È���d���ùHíH���PLTEÌÌÌ���Ó33d���MIDATH‰c£Àx�§” Nf*k²Ã)Ãø�§”•5}À)ÅS†ÚšpJUà”a§²¦œ2ÔŽw<špJ‚Q0 †;�� uTBúŸ����IEND®B‚ `

asked Aug 2, 2010 at 7:58

TCM's user avatar

1

You must not output anything before header(). Just start your document with <?php (as the first file characters), followed by the code for displaying the image. Skip the HTML tags. Do not even write a single blankline before header().

If you want to display an image inside the html document of yours, you must do it in two files. One, call it for example image.php, containing only the PHP code including the header. The second file, call it show.php or show.html, includes the HTML code you like, including <img src="image.php" alt="Your generated image" />.

Leopoldo Sanczyk's user avatar

answered Aug 2, 2010 at 8:00

Johan's user avatar

JohanJohan

4,9933 gold badges36 silver badges50 bronze badges

3

If you base64 encode the output, you could use the image directly with a Data URI scheme.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>

        <title></title>
    </head>
    <body>
        <?php

        $myImage = imagecreate(200, 100);
        $myGray = imagecolorallocate($myImage, 204, 204, 204);
        $myBlack = imagecolorallocate($myImage, 0, 0, 0);
        imageline($myImage, 15, 35, 120, 60, $myBlack);
        ob_start();
        imagepng($myImage);
        printf('<img src="data:image/png;base64,%s"/>', 
                base64_encode(ob_get_clean()));

        imagedestroy($myImage);
        ?>
    </body>
</html>

Note that Data URIs are not supported by all browsers (guess which).

answered Aug 2, 2010 at 8:12

Gordon's user avatar

GordonGordon

312k73 gold badges535 silver badges557 bronze badges

2

You should output only the image. You are outputting a bunch of tags. Specifically

<!DOCTYPE HTML PUBLIC «-//W3C//DTD
HTML 4.01 Transitional//EN»>

    <title></title>
</head>
<body>

and then the image as a binary. If you want to see this, wget the page from your server and try opening it in an editor. Your code should start at the <?php.

Removing the header gets rid of the notification to the client that this is an image so it will try out print it out as text.

answered Aug 2, 2010 at 8:08

Noufal Ibrahim's user avatar

Noufal IbrahimNoufal Ibrahim

71.2k12 gold badges135 silver badges169 bronze badges

While trying to output a jpg of a Facebook profile-picture from their Graph API with PHP,
I noticed that if the PHP file is saved with UTF-8 encoding — this error was returned,
but if the file was saved with ANSI encoding —
then it worked OK.

answered Feb 8, 2012 at 3:09

Yuval A.'s user avatar

Yuval A.Yuval A.

5,80911 gold badges50 silver badges63 bronze badges

1

If you have this problem, try to delete any space character between the begin of the script and the php tag

> <?php

I spent several hours before realize this. And now it works OK. This happens because any character on the file alter the png format. This worked great for me.

Stephen's user avatar

Stephen

1,7372 gold badges26 silver badges37 bronze badges

answered Feb 16, 2012 at 11:20

sneha's user avatar

snehasneha

311 bronze badge

Even if you think you have removed all the text from before header() your PHP file may contain a Byte Order Marker

This will be invisible to you in your editor, but your browser will see it and think the image is corrupt. You need to take the steps appropriate to your editor to remove any BOM.

Community's user avatar

answered Jun 9, 2013 at 14:01

Danack's user avatar

DanackDanack

24.8k16 gold badges90 silver badges122 bronze badges

This is all you need. You can not print anything else because it needs to look like it’s own file. You could call this image.php and pass it a variable to define which image to output.

<?php
    header('Content-type: image/png');
    $myImage = imagecreate(200, 100);
    $myGray = imagecolorallocate($myImage, 204, 204, 204);
    $myBlack = imagecolorallocate($myImage, 0, 0, 0);
    imageline($myImage, 15, 35, 120, 60, $myBlack);

    imagepng($myImage);
    imagedestroy($myImage);
?>

answered Aug 2, 2010 at 8:08

Shane Reustle's user avatar

Shane ReustleShane Reustle

8,5448 gold badges40 silver badges50 bronze badges

I isolated the PHP script into its own file (image.php) and it worked fine: I got a grey rectangle with a black slanted line. Your issue is trying to embed this within a HTML file.

You need the PHP in its own, separate file (as I did, call it image.php or something more description to your needs) and then create a HTML file as follows:

<html>
  <head>
    <title>Document Title</title>
  </head>
  <body>
    <img src="image.php" alt="" />
  </body>
</html>

You should get your desired output then.

answered Aug 2, 2010 at 8:18

Martin Bean's user avatar

Martin BeanMartin Bean

38.2k25 gold badges127 silver badges201 bronze badges

1

I had the same problem and the solution was to change the charset of the code from UTF-8 to ansi or viceversa. If the server is set to UTF-8 and your code is in ansi this don’t work and if your code is in ansi and the server is configured to UTF-8 neither.

answered Jul 18, 2012 at 6:52

user1520676's user avatar

0

If you are using Filezilla to upload your webpages make sure you select transfer type as 'Auto/Binary'.

Transfer -> Transfer type -> Auto/ Binary.

answered Apr 24, 2017 at 23:42

Vishrant's user avatar

VishrantVishrant

15.2k11 gold badges71 silver badges117 bronze badges

За последние 24 часа нас посетили 12346 программистов и 1196 роботов. Сейчас ищут 688 программистов …


  1. D.Lans

    D.Lans
    Активный пользователь

    С нами с:
    31 июл 2006
    Сообщения:
    345
    Симпатии:
    0

    Строка в которой подключается GD2, в php.ini раскомментирована.
    PHP 5.1.4.

    1. $image = ImageCreateFromPng(«image.png»);
    2. header(«Content-type: image/png»);

    В чем причины такого заявления?
    Как его оспорить?

  2. убери header и посмотри ошибки.


  3. X-Cray

    X-Cray
    Активный пользователь

    С нами с:
    10 июл 2006
    Сообщения:
    255
    Симпатии:
    0
    Адрес:
    Москва


  4. D.Lans

    D.Lans
    Активный пользователь

    С нами с:
    31 июл 2006
    Сообщения:
    345
    Симпатии:
    0

    X-Cray, сделал так.
    simpson, убрал header
    Вот что вылезло:

    1. Warning: imagecreatefrompng(image.png) [function.imagecreatefrompng]: failed to open stream: No such file or directory in E:usrwwwtestgd2my_test.php on line 3
    2. Warning: imagepng(): supplied argument is not a valid Image resource in E:usrwwwtestgd2my_test.php on line 5
    3. Warning: imagedestroy(): supplied argument is not a valid Image resource in E:usrwwwtestgd2my_test.php on line 6

  5. ну так поправь путь к картинке.


  6. D.Lans

    D.Lans
    Активный пользователь

    С нами с:
    31 июл 2006
    Сообщения:
    345
    Симпатии:
    0

    1. $image = ImageCreateFromPng(«/full/path/to/image.png»);

  7. D.Lans

    D.Lans
    Активный пользователь

    С нами с:
    31 июл 2006
    Сообщения:
    345
    Симпатии:
    0

    А относительным путем никак?


  8. D.Lans

    D.Lans
    Активный пользователь

    С нами с:
    31 июл 2006
    Сообщения:
    345
    Симпатии:
    0

    Сделал так:

    1. $image = ImageCreateFromPng(«E:/usr/www/test/gd2/image.png»);
    2. header(«Content-type: image/png»);

    Как то безрезультатно.


  9. vb

    D.Lans
    относительные пути можно.

    путь можешь посмотреть через realpath () выведи посмотри.


  10. D.Lans

    D.Lans
    Активный пользователь

    С нами с:
    31 июл 2006
    Сообщения:
    345
    Симпатии:
    0

    vb а куды его вставлять то? :shock:
    Вствляю перед хеадером — опять ошибка «невозможно отобразить изображение»..
    Закомментирую header —

    1. Warning: imagecreatefrompng(E:/usr/www/test/gd2/image.png) [function.imagecreatefrompng]: failed to open stream: No such file or directory in E:usrwwwtestgd2my_test.php on line 3
    2. Warning: imagepng(): supplied argument is not a valid Image resource in E:usrwwwtestgd2my_test.php on line 6
    3. Warning: imagedestroy(): supplied argument is not a valid Image resource in E:usrwwwtestgd2my_test.php on line 7


  11. D.Lans

    D.Lans
    Активный пользователь

    С нами с:
    31 июл 2006
    Сообщения:
    345
    Симпатии:
    0

    В общем сделал так:

    1. $img=imageCreate(100,100);
    2. imagecolorallocate($img, 100, 100, 100);
    3. header(«Content-type: image/png»);

    И все ок (на экране серый квадратик).


  12. Key_caesar

    Key_caesar
    Активный пользователь

    С нами с:
    12 мар 2011
    Сообщения:
    1
    Симпатии:
    0

    Извините, такое дело. Я решил выполнить этот скриптик:

    1. // Определяем черный цвет
    2. // Если вы работаете не под Windows , то надо приобразовать строку из кодировки KOIR-8 в СP1251
    3. // Тогда раскомментируйте cледующую строку
    4. // $String = convert_cyr_string($String,»k»,»w»);
    5. // Выводим строку с использованием font.ttf
    6. // Цвет серый 115 , 115 , 115
    7. // Координаты угла строки — 20,50
    8. //Header(«Content-type: image/png»);
    9. // Выводим картинку в формате PNG

    Под денвером все выполняется нормально.
    Но стоит залить на сервер, как появляется надпись, как в заголовке этой темы. Убираю header и тогда появляется вот это: �PNG ��� IHDR������d��������PLTE������������???���#ZC-����IDATx���1 �0��؈�m�q��� �x����VW��7~���������Ű8�j��Ȫ����4ݐǾ��P����7�Ԕ

    Как понять, в чем у меня ошибка?


  13. PoetRomantik

    PoetRomantik
    Активный пользователь

    С нами с:
    13 мар 2011
    Сообщения:
    1
    Симпатии:
    0
    Адрес:
    Москва

    Да все должно работать. Я код скопипастил. у меня похожий шаблон был. Не знаю, в чем проблема ;(

  14. Скорее всего — у вас отключено отображение ошибок и потому вы не видите примерно такого сообщения:

    Warning: imagettftext() [function.imagettftext]: Could not find/open font in ii.php on line 21


  15. Alex.vdshc.com

    С нами с:
    29 ноя 2019
    Сообщения:
    1
    Симпатии:
    0

    всем привет, у меня таже проблема, но решение нашёл в этой строке

    это сейчас, if (!function_exists(«imagecreatefrom.png»)) {
    а это было, if (!function_exists(«imagecreatefrompng»)) {

    но теперь при загрузке скрипта пишет следующее,

    Вам нужно перекомпилировать с библиотекой GD, включенной в PHP, чтобы эта функция могла функционировать

    что именно нужно сделать не пойму, подскажите….

За последние 24 часа нас посетили 8811 программистов и 843 робота. Сейчас ищут 365 программистов …

  1. Зингер
    Активный пользователь

    С нами с:
    20 июл 2017
    Сообщения:
    127
    Симпатии:
    7

    Всем привет. Изучаю PHP. Имеется OpenServer+PHP5.3.
    Пытаюсь создать картинку на лету

    1. <? ##Создание картинки на «лету»

    2. //Загружаем рисунок фона с диска

    3. //Создаем в палитре новый цвет — черный

    4. //Вычисляем размеры текста, который будет выведен

    5. //Выводим строку поверх того, что было в загруженном изображении

    6. //Сообщаем о том, что далее следует рисунок PNG

    7. header(‘Content-type: image/png,image/gif’);

    8. //Теперь — самое главное: отправляем данные картинки в стандартный выходной поток, т.е. в браузер

    9. //В конце освобождаем память, занятую картинкой

    В результате в браузере «вылетает» ошибка:
    Изображение «http://proba2/primer21.php»не может быть показано, так как содержит ошибки.
    Тестировал на Мозиле и Гугл хром (в Гугле просто маленький серый квадратик).
    1) Почитал разные форумы, советуют очистить кэш в браузере. Не помогает.
    2)Тестировал разные коды с форума. Результат тот же.

    Может что то с настройками? Подскажите пож-та.

  2. Команда форума
    Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.901
    Симпатии:
    968

    Эм… а как может один контейнер быть одновременно и пнг и гифом? Это первое что бросается в глаза. Второе — файл баттон.гиф лежит рядом со скриптом?

  3. Зингер
    Активный пользователь

    С нами с:
    20 июл 2017
    Сообщения:
    127
    Симпатии:
    7

    Это уже мои эксперименты.
    Менял imagepng($im); на imagegif($im); , ‘Content-type: image/png’ на ‘Content-type: image/gif’ ничего не помогает.
    Button.gif лежит рядом, да. Причем, пробовал указывать и прямой путь к файлу:
    D:OpenServerdomainsProba2button.gif

  4. Команда форума
    Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.901
    Симпатии:
    968

    Со вторым вопросом — всё в норме? Научись еще отладку адекватно делать. Как минимум — включи вывод ошибок и повысь уровень общительности пхп-машины. Почитай журналы веб-сервера.

  5. Если ты выводишь imagepng то заголовок должен быть ‘Content-type: image/png’, а если imagegif то ‘Content-type: image/gif’. Пробуй!

  6. Зингер
    Активный пользователь

    С нами с:
    20 июл 2017
    Сообщения:
    127
    Симпатии:
    7

    Ничего критического или каких-то ошибок в логах PHP, Apache и основном я не нашел.
    Вот php.ini

    1. error_reporting = E_ALL & ~E_NOTICE | E_STRICT

    2. display_startup_errors = On

    3. log_errors_max_len = 9024

    4. ignore_repeated_errors = On

    5. ignore_repeated_source = On

    6. ;docref_root = «/phpmanual/»

    7. ;error_prepend_string = «<font color=#ff0000>»

    8. ;error_append_string = «</font>»

    9. error_log = «%sprogdir%/userdata/logs/%phpdriver%_error.log»

    Причем, не понятно почему браузер «ругается» на «http://proba2/primer21.php», а не на изображение.

  7. Команда форума
    Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.901
    Симпатии:
    968

    ну по какому урлу изображение ожидается на такой урл браузер и ругается. замени тип данных на text/plain и посмотри что браузер получает

  8. Зингер
    Активный пользователь

    С нами с:
    20 июл 2017
    Сообщения:
    127
    Симпатии:
    7

    Кракозябры в браузере.
    P.S. Что то загрузить изображение не могу.

  9. Команда форума
    Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.901
    Симпатии:
    968

    дай гифку с которой работаешь (архивом)

  10. Зингер
    Активный пользователь

    С нами с:
    20 июл 2017
    Сообщения:
    127
    Симпатии:
    7

    У меня не получается загрузить файл.
    Пишет: Произошла ошибка. При загрузке файла возникла проблема. И все.
    Размер архива 611Кб.

  11. Команда форума
    Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.901
    Симпатии:
    968

    через файлообменник попробуй

  12. Зингер
    Активный пользователь

    С нами с:
    20 июл 2017
    Сообщения:
    127
    Симпатии:
    7

    Хотя, я выбрал гифку наугад, просто потренироваться. Переформатировал из Джипега.
    — Добавлено —

    Вот ссылка — https://yadi.sk/d/2iWCeq5z3LDsPa

  13. Команда форума
    Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.901
    Симпатии:
    968

    всё работает. я только открывающий тег на полный поменял и удалил закрывающий. интерпретатор версии 7.0

  14. Зингер
    Активный пользователь

    С нами с:
    20 июл 2017
    Сообщения:
    127
    Симпатии:
    7

    О, получилось! Поменял на 7.0 и перекодировал на UTF-8 без BOM.
    Спасибо большое! Продолжаем обучение.

  15. Ты в чём пичешь код? Мне требовалось делать перекодировку видел только в notepad++. Используй ide их не много, phpshtorm и NetBeans, они по умолчанию используют uff-8 и в них есть много крутых штук.

  16. Зингер
    Активный пользователь

    С нами с:
    20 июл 2017
    Сообщения:
    127
    Симпатии:
    7

    В Нотпаде++, да. За совет спасибо, просто что показали, то я и юзаю.

Why is this code not working ?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>

        <title></title>
    </head>
    <body>
        <?php
        header('Content-type: image/png');
        $myImage = imagecreate(200, 100);
        $myGray = imagecolorallocate($myImage, 204, 204, 204);
        $myBlack = imagecolorallocate($myImage, 0, 0, 0);
        imageline($myImage, 15, 35, 120, 60, $myBlack);

        imagepng($myImage);
        imagedestroy($myImage);
        ?>
    </body>
</html>

I always get error The image cannot be displayed because it contains errors.. I’ve already enabled php_gd2.dll and memory_limit in php.ini is also 128M. If i remove header('Content-type: image/png'); i don’t get the error but i don’t see the image either. All i see is this :-

‰PNG ��� IHDR���È���d���ùHíH���PLTEÌÌÌ���Ó33d���MIDATH‰c£Àx�§” Nf*k²Ã)Ãø�§”•5}À)ÅS†ÚšpJUà”a§²¦œ2ÔŽw<špJ‚Q0 †;�� uTBúŸ����IEND®B‚ `

asked Aug 2, 2010 at 7:58

TCM's user avatar

1

You must not output anything before header(). Just start your document with <?php (as the first file characters), followed by the code for displaying the image. Skip the HTML tags. Do not even write a single blankline before header().

If you want to display an image inside the html document of yours, you must do it in two files. One, call it for example image.php, containing only the PHP code including the header. The second file, call it show.php or show.html, includes the HTML code you like, including <img src="image.php" alt="Your generated image" />.

Leopoldo Sanczyk's user avatar

answered Aug 2, 2010 at 8:00

Johan's user avatar

JohanJohan

4,9833 gold badges35 silver badges50 bronze badges

3

If you base64 encode the output, you could use the image directly with a Data URI scheme.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>

        <title></title>
    </head>
    <body>
        <?php

        $myImage = imagecreate(200, 100);
        $myGray = imagecolorallocate($myImage, 204, 204, 204);
        $myBlack = imagecolorallocate($myImage, 0, 0, 0);
        imageline($myImage, 15, 35, 120, 60, $myBlack);
        ob_start();
        imagepng($myImage);
        printf('<img src="data:image/png;base64,%s"/>', 
                base64_encode(ob_get_clean()));

        imagedestroy($myImage);
        ?>
    </body>
</html>

Note that Data URIs are not supported by all browsers (guess which).

answered Aug 2, 2010 at 8:12

Gordon's user avatar

GordonGordon

310k73 gold badges532 silver badges556 bronze badges

2

You should output only the image. You are outputting a bunch of tags. Specifically

<!DOCTYPE HTML PUBLIC «-//W3C//DTD
HTML 4.01 Transitional//EN»>

    <title></title>
</head>
<body>

and then the image as a binary. If you want to see this, wget the page from your server and try opening it in an editor. Your code should start at the <?php.

Removing the header gets rid of the notification to the client that this is an image so it will try out print it out as text.

answered Aug 2, 2010 at 8:08

Noufal Ibrahim's user avatar

Noufal IbrahimNoufal Ibrahim

70.5k12 gold badges134 silver badges169 bronze badges

While trying to output a jpg of a Facebook profile-picture from their Graph API with PHP,
I noticed that if the PHP file is saved with UTF-8 encoding — this error was returned,
but if the file was saved with ANSI encoding —
then it worked OK.

answered Feb 8, 2012 at 3:09

Yuval A.'s user avatar

Yuval A.Yuval A.

5,64311 gold badges51 silver badges63 bronze badges

1

If you have this problem, try to delete any space character between the begin of the script and the php tag

> <?php

I spent several hours before realize this. And now it works OK. This happens because any character on the file alter the png format. This worked great for me.

Stephen's user avatar

Stephen

1,7372 gold badges28 silver badges37 bronze badges

answered Feb 16, 2012 at 11:20

sneha's user avatar

snehasneha

311 bronze badge

Even if you think you have removed all the text from before header() your PHP file may contain a Byte Order Marker

This will be invisible to you in your editor, but your browser will see it and think the image is corrupt. You need to take the steps appropriate to your editor to remove any BOM.

Community's user avatar

answered Jun 9, 2013 at 14:01

Danack's user avatar

DanackDanack

24.6k15 gold badges89 silver badges120 bronze badges

This is all you need. You can not print anything else because it needs to look like it’s own file. You could call this image.php and pass it a variable to define which image to output.

<?php
    header('Content-type: image/png');
    $myImage = imagecreate(200, 100);
    $myGray = imagecolorallocate($myImage, 204, 204, 204);
    $myBlack = imagecolorallocate($myImage, 0, 0, 0);
    imageline($myImage, 15, 35, 120, 60, $myBlack);

    imagepng($myImage);
    imagedestroy($myImage);
?>

answered Aug 2, 2010 at 8:08

Shane Reustle's user avatar

Shane ReustleShane Reustle

8,3968 gold badges39 silver badges49 bronze badges

I isolated the PHP script into its own file (image.php) and it worked fine: I got a grey rectangle with a black slanted line. Your issue is trying to embed this within a HTML file.

You need the PHP in its own, separate file (as I did, call it image.php or something more description to your needs) and then create a HTML file as follows:

<html>
  <head>
    <title>Document Title</title>
  </head>
  <body>
    <img src="image.php" alt="" />
  </body>
</html>

You should get your desired output then.

answered Aug 2, 2010 at 8:18

Martin Bean's user avatar

Martin BeanMartin Bean

37.8k25 gold badges123 silver badges196 bronze badges

1

I had the same problem and the solution was to change the charset of the code from UTF-8 to ansi or viceversa. If the server is set to UTF-8 and your code is in ansi this don’t work and if your code is in ansi and the server is configured to UTF-8 neither.

answered Jul 18, 2012 at 6:52

user1520676's user avatar

0

If you are using Filezilla to upload your webpages make sure you select transfer type as 'Auto/Binary'.

Transfer -> Transfer type -> Auto/ Binary.

answered Apr 24, 2017 at 23:42

Vishrant's user avatar

VishrantVishrant

14.6k11 gold badges69 silver badges109 bronze badges

Why is this code not working ?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>

        <title></title>
    </head>
    <body>
        <?php
        header('Content-type: image/png');
        $myImage = imagecreate(200, 100);
        $myGray = imagecolorallocate($myImage, 204, 204, 204);
        $myBlack = imagecolorallocate($myImage, 0, 0, 0);
        imageline($myImage, 15, 35, 120, 60, $myBlack);

        imagepng($myImage);
        imagedestroy($myImage);
        ?>
    </body>
</html>

I always get error The image cannot be displayed because it contains errors.. I’ve already enabled php_gd2.dll and memory_limit in php.ini is also 128M. If i remove header('Content-type: image/png'); i don’t get the error but i don’t see the image either. All i see is this :-

‰PNG ��� IHDR���È���d���ùHíH���PLTEÌÌÌ���Ó33d���MIDATH‰c£Àx�§” Nf*k²Ã)Ãø�§”•5}À)ÅS†ÚšpJUà”a§²¦œ2ÔŽw<špJ‚Q0 †;�� uTBúŸ����IEND®B‚ `

asked Aug 2, 2010 at 7:58

TCM's user avatar

1

You must not output anything before header(). Just start your document with <?php (as the first file characters), followed by the code for displaying the image. Skip the HTML tags. Do not even write a single blankline before header().

If you want to display an image inside the html document of yours, you must do it in two files. One, call it for example image.php, containing only the PHP code including the header. The second file, call it show.php or show.html, includes the HTML code you like, including <img src="image.php" alt="Your generated image" />.

Leopoldo Sanczyk's user avatar

answered Aug 2, 2010 at 8:00

Johan's user avatar

JohanJohan

4,9833 gold badges35 silver badges50 bronze badges

3

If you base64 encode the output, you could use the image directly with a Data URI scheme.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>

        <title></title>
    </head>
    <body>
        <?php

        $myImage = imagecreate(200, 100);
        $myGray = imagecolorallocate($myImage, 204, 204, 204);
        $myBlack = imagecolorallocate($myImage, 0, 0, 0);
        imageline($myImage, 15, 35, 120, 60, $myBlack);
        ob_start();
        imagepng($myImage);
        printf('<img src="data:image/png;base64,%s"/>', 
                base64_encode(ob_get_clean()));

        imagedestroy($myImage);
        ?>
    </body>
</html>

Note that Data URIs are not supported by all browsers (guess which).

answered Aug 2, 2010 at 8:12

Gordon's user avatar

GordonGordon

310k73 gold badges532 silver badges556 bronze badges

2

You should output only the image. You are outputting a bunch of tags. Specifically

<!DOCTYPE HTML PUBLIC «-//W3C//DTD
HTML 4.01 Transitional//EN»>

    <title></title>
</head>
<body>

and then the image as a binary. If you want to see this, wget the page from your server and try opening it in an editor. Your code should start at the <?php.

Removing the header gets rid of the notification to the client that this is an image so it will try out print it out as text.

answered Aug 2, 2010 at 8:08

Noufal Ibrahim's user avatar

Noufal IbrahimNoufal Ibrahim

70.5k12 gold badges134 silver badges169 bronze badges

While trying to output a jpg of a Facebook profile-picture from their Graph API with PHP,
I noticed that if the PHP file is saved with UTF-8 encoding — this error was returned,
but if the file was saved with ANSI encoding —
then it worked OK.

answered Feb 8, 2012 at 3:09

Yuval A.'s user avatar

Yuval A.Yuval A.

5,64311 gold badges51 silver badges63 bronze badges

1

If you have this problem, try to delete any space character between the begin of the script and the php tag

> <?php

I spent several hours before realize this. And now it works OK. This happens because any character on the file alter the png format. This worked great for me.

Stephen's user avatar

Stephen

1,7372 gold badges28 silver badges37 bronze badges

answered Feb 16, 2012 at 11:20

sneha's user avatar

snehasneha

311 bronze badge

Even if you think you have removed all the text from before header() your PHP file may contain a Byte Order Marker

This will be invisible to you in your editor, but your browser will see it and think the image is corrupt. You need to take the steps appropriate to your editor to remove any BOM.

Community's user avatar

answered Jun 9, 2013 at 14:01

Danack's user avatar

DanackDanack

24.6k15 gold badges89 silver badges120 bronze badges

This is all you need. You can not print anything else because it needs to look like it’s own file. You could call this image.php and pass it a variable to define which image to output.

<?php
    header('Content-type: image/png');
    $myImage = imagecreate(200, 100);
    $myGray = imagecolorallocate($myImage, 204, 204, 204);
    $myBlack = imagecolorallocate($myImage, 0, 0, 0);
    imageline($myImage, 15, 35, 120, 60, $myBlack);

    imagepng($myImage);
    imagedestroy($myImage);
?>

answered Aug 2, 2010 at 8:08

Shane Reustle's user avatar

Shane ReustleShane Reustle

8,3968 gold badges39 silver badges49 bronze badges

I isolated the PHP script into its own file (image.php) and it worked fine: I got a grey rectangle with a black slanted line. Your issue is trying to embed this within a HTML file.

You need the PHP in its own, separate file (as I did, call it image.php or something more description to your needs) and then create a HTML file as follows:

<html>
  <head>
    <title>Document Title</title>
  </head>
  <body>
    <img src="image.php" alt="" />
  </body>
</html>

You should get your desired output then.

answered Aug 2, 2010 at 8:18

Martin Bean's user avatar

Martin BeanMartin Bean

37.8k25 gold badges123 silver badges196 bronze badges

1

I had the same problem and the solution was to change the charset of the code from UTF-8 to ansi or viceversa. If the server is set to UTF-8 and your code is in ansi this don’t work and if your code is in ansi and the server is configured to UTF-8 neither.

answered Jul 18, 2012 at 6:52

user1520676's user avatar

0

If you are using Filezilla to upload your webpages make sure you select transfer type as 'Auto/Binary'.

Transfer -> Transfer type -> Auto/ Binary.

answered Apr 24, 2017 at 23:42

Vishrant's user avatar

VishrantVishrant

14.6k11 gold badges69 silver badges109 bronze badges

Когда я пробую этот код, я получаю эту ошибку: «Изображение не может быть отображено, поскольку оно содержит ошибки», и я не знаю, как это исправить.

header('Content-type: image/jpeg');
$email= 'example@example.com';
$email_length=strlen($email);
$font_size= 4;
$image_height= imagefontheight($font_size);
$image_width = imagefontwidth($font_size)*$email_length;
$image=imagecreate($image_width, $image_height);
imagecolorallocate($image,255,255,255);
$font_color= imagecolorallocate($image,0,0,0);
imagestring($image,$font_size, 0, 0, $email, $font_color);
imagejpeg($image);

0

Решение

Сообщение «Изображение не может быть отображено, потому что оно содержит ошибки» производится браузером. В заголовке ответа, полученного с сервера, говорится, что тело ответа следует интерпретировать как изображение JPEG (image/jpeg).

Формат файлов JPEG (как и большинства двоичных форматов) начинается с заголовка, который содержит «подпись» (последовательность байтов, используемых для идентификации файла как JPEG), информацию об изображении (ширина, высота), длина содержимого и т. Д.

Если сценарий выдает предупреждение или уведомление во время выполнения, этот дополнительный контент получается браузером до байтов файла изображения (они генерируются самой последней строкой кода), браузер не может найти подпись JPEG и отчеты ошибка выше (и это правильно).

Как отладить это

Удалить / прокомментировать header() Выровняйте или замените его временно:

header('Content-type: text/plain');

Это изменение перестанет указывать браузеру интерпретировать контент как изображение; он будет отображаться как есть, и вы можете просмотреть его и просмотреть предупреждения и уведомления PHP, если таковые имеются.

После того, как вы найдете и решите проблемы и код больше не выдает сообщений об ошибках, поставьте оригинал header линия назад, и это должно работать.

Другая возможная причина: спецификация

Если описанное выше изменение не выявило какого-либо сообщения, созданного кодом, и браузер все еще жалуется на ошибки в полученном контенте, убедитесь, что файл PHP НЕ сохранен как UTF-8 с BOM. UTF-8 в порядке, проблема в спецификации.

BOM (метка порядка байтов) — это последовательность байтов, которая записывается в самом начале файла, чтобы программы, которые его читают, знали, как символы кодируются в этом файле. Это жизненно важно для кодировки UTF-16, но совершенно бесполезно для UTF-8. Тем не менее, многие текстовые редакторы помещают его в файлы, и некоторые из них имеют возможность пропустить его.

Спецификация кодирует специальный символ пробела, который не виден и не занимает места. Он не может быть обнаружен визуальным осмотром сценария PHP или его вывода. Кроме того, нет способа обработать его из кода PHP, потому что, если он есть, он сохраняется в файле PHP перед открывающим тегом. <?php и интерпретатор PHP отправляет его в браузер вместе со всем, что находится за пределами тегов открытия и закрытия PHP.

Как это решить

Проверьте настройки своего редактора кода и снимите флажок с опции использования спецификации при сохранении файла (или отметьте параметр с надписью «пропустить спецификацию»).

Если в отношении спецификации нет настроек, измените кодировку на ISO-8859-1 (также известен как ISO-latin1). Эта кодировка не использует спецификацию и идентична UTF-8 для всех символов ASCII (цифр, строчных и прописных букв без акцентов или диакритических знаков, знаков пунктуации, скобок, математических операторов, прямых кавычек и других специальных символов, используемых в программе языки).

Изменение кодировки никак не повлияет на код, ставящий вопрос.

1

Другие решения

Убедитесь, что библиотека GD установлена

if (extension_loaded('gd') && function_exists('gd_info')) {
echo "PHP GD library is installed on your web server";
}
else {
echo "PHP GD library is NOT installed on your web server";
}

0

Полезная информация

Многие проблемы быстрее решаются поиском по форуму и чтением FAQ, чем созданием новой темы и томительным ожиданием ответа.

№119-06-2008 12:47:54

HASK
 
Группа: Guest
UA: Firefox 2.0

Изображение не может быть показано так как содержит ошибки

Господа, помогите разобраться плиз.

С некоторого времени появилась досадная ситуация, при открытии некоторых изображений стала появляться надпись вместо изображения «Изображение не может быть показано так как содержит ошибки». Версия «лисы» — Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14

Что только не делал, ничего не помогает. Это происходит только на стационарной рабочей машине. На ноуте, на домашней машине все нормально, на рабочей ни в какую. Брал профили с ноута и с домашней — не помогло. На днях вообще саму винду в чистую переставил, поставил свежую «лису» — не помогло. Вчера поставил третий firefox — тоже самое, «изображение не может быть показано». Кто может что либо посоветовать? Уже не знаю в какую сторону копать.

ЗЫ Пока выхожу из ситуации только тем, что при использовании IE Tab изображения показываются.. :-(

Заранее спасибо за помощь.

№219-06-2008 20:56:42

Pit
 
Группа: Guest
UA: Firefox 2.0

Re: Изображение не может быть показано так как содержит ошибки

У меня тоже самое, и тоже только на большом компе, а на ноуте все работает. Пока не могу тоже эту фичу победить.

№319-06-2008 22:19:04

Rosenfeld
Linux registered user # 526899
 
Группа: Members
Откуда: ‎
Зарегистрирован: 21-10-2005
Сообщений: 4642
UA: Firefox 2.0
Веб-сайт

Re: Изображение не может быть показано так как содержит ошибки

Это говорит о том, что изображение не загрузилось целиком.


Project Rosenfox:  Pure, fast and secure inner settings for Mozilla Firefox. Global and complete manual on GitHub.

Отсутствует

№420-06-2008 11:21:31

HASK
 
Группа: Guest
UA: Firefox 2.0

Re: Изображение не может быть показано так как содержит ошибки

Rosenfeld, это говорит о том, что, увы, но Вы не правы. Все моментально грузится. И через IE Tab все показывается, не показывается только через FF. :angry:

№520-06-2008 11:47:42

Vladimir_S
 
Группа: Guest
UA: Firefox 3.0

Re: Изображение не может быть показано так как содержит ошибки

HASK пишет

Господа, помогите разобраться плиз.

С некоторого времени появилась досадная ситуация, при открытии некоторых изображений стала появляться надпись вместо изображения «Изображение не может быть показано так как содержит ошибки». Версия «лисы» — Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14

Что только не делал…

А можно хоть одну характЕрную ссылку?

№620-06-2008 12:27:14

HASK
 
Группа: Guest
UA: Firefox 2.0

Re: Изображение не может быть показано так как содержит ошибки

ну например вот ссылочка http://img11.nnm.ru/imagez/gallery/8/a/3/1/f/8a31fb67b9e70aa4bd5782cad6bd995a_full.jpg

№720-06-2008 12:46:09

Rosenfeld
Linux registered user # 526899
 
Группа: Members
Откуда: ‎
Зарегистрирован: 21-10-2005
Сообщений: 4642
UA: Firefox 3.0
Веб-сайт

Re: Изображение не может быть показано так как содержит ошибки

Замечательнейшим образом грузится. ФФ 3.0.
Без всяких IE Tab — я даже никогда его и не ставил.

Грузится полностью и очень быстро:

http://forum.mozilla-russia.org/uploaded/no-image-1.jpg

Это говорит, увы, о том, что Вы не правы.
Ищите ошибку на своей стороне.

Отредактировано Rosenfeld (20-06-2008 12:47:19)


Project Rosenfox:  Pure, fast and secure inner settings for Mozilla Firefox. Global and complete manual on GitHub.

Отсутствует

№820-06-2008 13:04:27

HASK
 
Группа: Guest
UA: Firefox 2.0

Re: Изображение не может быть показано так как содержит ошибки

да я и так понимаю что это локальная проблема и только одной машины, так как на ноутбуке и на домашней машине у меня также все прекрасно грузиться.

Rosenfeld, если Вам нечего сказать по существу, то так и скажите.

№920-06-2008 13:09:33

Rosenfeld
Linux registered user # 526899
 
Группа: Members
Откуда: ‎
Зарегистрирован: 21-10-2005
Сообщений: 4642
UA: Firefox 3.0
Веб-сайт

Re: Изображение не может быть показано так как содержит ошибки

при открытии некоторых изображений стала появляться надпись вместо изображения «Изображение не может быть показано так как содержит ошибки».

ну например вот ссылочка http://img11.nnm.ru/imagez/gallery/8/a/3/1/f/8a31fb67b9e70aa4bd5782cad6bd995a_full.jpg

Вы уж извините, дорогой друг, но я Вам по существу и говорю. Если Вы приводите ссылку на якобы «неоткрывающийся» графический файл, то, судя по всему, именно для того, чтобы другие участники форума ее проверили и подтвердили / опровергли Ваше утверждение.

Вот я Вам «по существу» и рапортую: изображение загрузилось полностью, без проблем и IE Tab.


Project Rosenfox:  Pure, fast and secure inner settings for Mozilla Firefox. Global and complete manual on GitHub.

Отсутствует

№1020-06-2008 13:10:14

Алекс_гость
 
Группа: Guest
UA: Firefox 3.0

Re: Изображение не может быть показано так как содержит ошибки

Откройте это изображение и нажмите Ctrl-F5… Битый файл лежит в кэше, а не грузится из Инета… По крайней мере мне в подобной ситуации всегда помогало.

№1120-06-2008 13:17:36

MySh
Кактусогрыз
 
Группа: Extensions
Зарегистрирован: 17-12-2006
Сообщений: 4623
UA: Firefox 3.0

Re: Изображение не может быть показано так как содержит ошибки

Расширение Skype установлено? Если да, попробуйте его отключить.

Отсутствует

№1220-06-2008 13:30:56

HASK
 
Группа: Guest
UA: Firefox 2.0

Re: Изображение не может быть показано так как содержит ошибки

MySh, ОГРОМНОЕ СПАСИБО! действительно помог вынос расширения скайпа! Странно то, что на двух других машинах с этим же расширением все в порядке. В любом случае огромное спасибо!!

№1316-07-2008 20:35:14

Nasvit
 
Группа: Guest
UA: Firefox 3.0

Re: Изображение не может быть показано так как содержит ошибки

MySh, ОГРОМНОЕ СПАСИБО и от меня! Снес дополнение скайпа и все открывается без проблем! Еще раз Спасибо! :beer:

№1406-08-2008 13:36:45

Winderland
 
Группа: Guest
UA: Firefox 3.0

Re: Изображение не может быть показано так как содержит ошибки

У меня такая же проблема. тока осложняется она еще и тем, что я не знаю о каких «расширениях» скайпа идет речь. где их можно отключить?

№1506-08-2008 16:49:17

Unghost
Призрак-админ
 
Группа: Administrators
Откуда: Moscow, Russia
Зарегистрирован: 08-10-2004
Сообщений: 11771
UA: Minefield 3.1

Re: Изображение не может быть показано так как содержит ошибки

Winderland
Инструменты -> Дополнения


Do not meddle in the affairs of Wizards, for they are subtle and quick to anger.

Отсутствует

№1607-08-2008 23:01:07

Winderland
 
Группа: Guest
UA: Firefox 3.0

Re: Изображение не может быть показано так как содержит ошибки

Спасибо огромное!!! ;)

№1717-12-2008 17:52:45

GunsRU
 
Группа: Guest
UA: Firefox 3.0

Re: Изображение не может быть показано так как содержит ошибки

Спасибо, ребят. У меня тоже заработало :) А то не знал где искать, мучался.

№1803-05-2010 12:15:57

niksu
Участник
 
Группа: Members
Зарегистрирован: 22-02-2010
Сообщений: 1
UA: Firefox 3.6

Re: Изображение не может быть показано так как содержит ошибки

у меня такой вопрос.
у меня в лисе не отображаются изображения в скрытых вкладках. Хотя сами картинки грузятся (аватарки, банеры, картинки в подписях). И еще один нюанс  все каритнки загружаюся через IE. Не подскажите в чем может быть проблема? Очень достало. Раньше такого не было.

Отсутствует

При создании изображения с помощью PHP, например, добавление водяного знака на сохраненное изображение сервера, с использованием кода ниже или аналогичного с JPEG вместо PNG, изображение может вообще не создаваться и вызывать ошибку, непосредственно видимую в Firefox, но не на Chrome.

Такой код, несмотря на работу на некоторых серверах, теперь может работать над некоторыми другими, иногда по неясным причинам. В моем случае он работал отлично нормально локально, но при ошибке ниже на интернет-сервере изображение не отображалось, поскольку оно содержит ошибки.

Проблема может быть вызвана несколькими причинами: вот некоторые из них:

Выход уже установлен ранее.

Настоящая ошибка в генерации изображений.

Используется неправильный тип изображения.

Библиотека изображений не установлена.

Выход уже установлен ранее

Даже если это не преднамеренно, может быть, например, что другие предыдущие сценарии содержали пробелы в конце — чтобы избежать этой ошибки, убедитесь, что, как рекомендует PHP, не закрывать скрипты с помощью тега PHP end>

Затем, прежде чем использовать функцию заголовка, используйте следующий код, чтобы убедиться, что любой ранее установленный заголовок отбрасывается

А также эта функция, чтобы убедиться, что выходной сигнал не был сформирован перед заголовком и изображением

Это решило проблему в моем случае, и изображение было правильно отображено снова.

Настоящая ошибка в генерации изображений

Если во время генерации изображения возникла настоящая ошибка, убедитесь, что PHP установлен для отображения всех возможных ошибок и проверки соответствующих журналов, чтобы иметь возможность отслеживать и разрешать его.

Следующий код заставит PHP сообщать обо всех ошибках в журнале:

Затем вы можете узнать, что сообщалось о некоторых ошибках, даже если они не отображались в выходном html из-за конфигурации сервера.

Используется неправильный тип изображения

Убедитесь, что используемые вами типы изображений верны, например, используя этот код, чтобы различать png и jpeg.

Также убедитесь, что заголовок правильно соответствует используемому выходу, в зависимости от используемой функции генерации изображения

Библиотека изображений не установлена

Чтобы убедиться, что библиотеки изображений установлены. Для этого запустите функцию phpinfo (); в скрипте и проверить вывод для следующего значения, связанного с PHP GD, графической библиотекой, которая используется такими функциями, как imagepng ();

В случае отсутствия пакетов способ его решения зависит от вашей локальной конфигурации либо путем добавления пакета с помощью команд PEAR, либо с помощью встроенного в веб-узел решения для установки пакета.

Что делать, если imagejpeg или imagepng не работает

В NotePad ++ откройте файл PHP, который вызывает функцию imagepng, и сохраните его после перехода в меню «Кодирование»> «Преобразовать в UTF-8 без спецификации».

В DreamWeaver перейдите в Свойства страницы> Заголовок / Кодировка> снимите флажок Включить подпись Unicode (BOM).

Когда PHP imagejpeg или imagepng не работает, это, скорее всего, связано с тем, что файл PHP был закодирован с помощью спецификации, ведомости материалов, и, следовательно, дополнительная информация отправляется вместе с изображением перед данными изображения.

Функции PHP imagejpeg и PHP imagepng — это функции, используемые для отправки кода изображения непосредственно в ответе сервера.

PHP — imagepng не работает должным образом
PHP — функция imagepng
PHP — функция imagejpeg

 

Пользователь 91788

Посетитель

Сообщений: 56
Баллов: 4
Авторитет:

0

Рейтинг пользователя:

0

Регистрация: 06.06.2011

Перестала генерироваться картинка CAPTCHA. Заходим в Настройки->Настройки модуля->CAPTCHA

Не отображает картинки.

И выдает сообщение «изображение не может быть показано так как содержит ошибки»

Никаких работ не проводилось и тут такая вот шутка, подскажите куда копать, где можно смотреть.

 

Администратор

Сообщений: 1433
Баллов: 216
Авторитет:

1

Рейтинг пользователя:

14

Регистрация: 31.10.2007

techs,
Создайте обращение в ТП, поможем.

 

Пользователь 91788

Посетитель

Сообщений: 56
Баллов: 4
Авторитет:

0

Рейтинг пользователя:

0

Регистрация: 06.06.2011

Так и сделал сразу, но как то пока тишина.
Спасибо.

 

Пользователь 8352

Заглянувший

Сообщений: 35
Баллов: 2
Авторитет:

1

Рейтинг пользователя:

1

Регистрация: 06.01.2007

И что там было? Выяснили причину?У меня тоже самое

 

Администратор

Сообщений: 1433
Баллов: 216
Авторитет:

1

Рейтинг пользователя:

14

Регистрация: 31.10.2007

Алексей Бурлака,
Укажите ссылку на страницу с капчей.

 

Пользователь 5480

Гуру

Сообщений: 3476
Баллов: 680
Авторитет:

1

Рейтинг пользователя:

21

Регистрация: 15.08.2006

Компания АЛТАСИБ

попробуйте init.php удалите (временно)
бывает, что из за пробелов там капча не работает :)

Что нам стоит, сайт построить? — Нарисуем, будет жить!

 

Пользователь 84434

Заглянувший

Сообщений: 4
Авторитет:

1

Рейтинг пользователя:

0

Регистрация: 01.02.2012

#10

0

03.03.2013 00:23:41

Цитата
vhar пишет:
Сергей, спасибо что откликнулись.
Не помогло.
Собака порылась гдето в другом месте. Помогло отключение модуля http://marketplace.1c-bitrix.ru/solutions/sozdavatel.shop/

Здравствуйте.

В модуле sosdavatel.shop в конец файла /bitrix/modules/sozdavatel.shop/include.php случайно закрался лишний пробел после тега  ?>, закрывающего php-код.
Чтобы капча заработала при установленном модуле, нужно удалить этот пробел.

В ближайшем обновлении исправим этот нюанс.
Спасибо.

Изображение [] не может быть показано, так как содержит ошибки.

Если с изображением всё в порядке, но при выводе его через скрипт браузер выдаёт ошибку:
Изображение [] не может быть показано, так как содержит ошибки.

А Firebug: Image corrupt or truncated: []

Ошибка в том, что вы кроме содержимого файла посылаете лишние символы. «Мешать» могут как непосредственный вывод (echo, print), так и невидимые для глаза символы. Например, перед открывающим тегом php могут быть лишние пробелы или переносы строк. И после закрывающего тега php также могут быть лишние символы (собственно поэтому лучше не ставить в конце php-файла закрывающий тег php)

Copyright © 2008 scabbiaza.net
PHP-программист: программирование сайтов, интернет-магазинов, порталов

Когда я пробую этот код, я получаю эту ошибку: «Изображение не может быть отображено, поскольку оно содержит ошибки», и я не знаю, как это исправить.

header('Content-type: image/jpeg');
$email= 'example@example.com';
$email_length=strlen($email);
$font_size= 4;
$image_height= imagefontheight($font_size);
$image_width = imagefontwidth($font_size)*$email_length;
$image=imagecreate($image_width, $image_height);
imagecolorallocate($image,255,255,255);
$font_color= imagecolorallocate($image,0,0,0);
imagestring($image,$font_size, 0, 0, $email, $font_color);
imagejpeg($image);

0

Решение

Сообщение «Изображение не может быть отображено, потому что оно содержит ошибки» производится браузером. В заголовке ответа, полученного с сервера, говорится, что тело ответа следует интерпретировать как изображение JPEG (image/jpeg).

Формат файлов JPEG (как и большинства двоичных форматов) начинается с заголовка, который содержит «подпись» (последовательность байтов, используемых для идентификации файла как JPEG), информацию об изображении (ширина, высота), длина содержимого и т. Д.

Если сценарий выдает предупреждение или уведомление во время выполнения, этот дополнительный контент получается браузером до байтов файла изображения (они генерируются самой последней строкой кода), браузер не может найти подпись JPEG и отчеты ошибка выше (и это правильно).

Как отладить это

Удалить / прокомментировать header() Выровняйте или замените его временно:

header('Content-type: text/plain');

Это изменение перестанет указывать браузеру интерпретировать контент как изображение; он будет отображаться как есть, и вы можете просмотреть его и просмотреть предупреждения и уведомления PHP, если таковые имеются.

После того, как вы найдете и решите проблемы и код больше не выдает сообщений об ошибках, поставьте оригинал header линия назад, и это должно работать.

Другая возможная причина: спецификация

Если описанное выше изменение не выявило какого-либо сообщения, созданного кодом, и браузер все еще жалуется на ошибки в полученном контенте, убедитесь, что файл PHP НЕ сохранен как UTF-8 с BOM. UTF-8 в порядке, проблема в спецификации.

BOM (метка порядка байтов) — это последовательность байтов, которая записывается в самом начале файла, чтобы программы, которые его читают, знали, как символы кодируются в этом файле. Это жизненно важно для кодировки UTF-16, но совершенно бесполезно для UTF-8. Тем не менее, многие текстовые редакторы помещают его в файлы, и некоторые из них имеют возможность пропустить его.

Спецификация кодирует специальный символ пробела, который не виден и не занимает места. Он не может быть обнаружен визуальным осмотром сценария PHP или его вывода. Кроме того, нет способа обработать его из кода PHP, потому что, если он есть, он сохраняется в файле PHP перед открывающим тегом. <?php и интерпретатор PHP отправляет его в браузер вместе со всем, что находится за пределами тегов открытия и закрытия PHP.

Как это решить

Проверьте настройки своего редактора кода и снимите флажок с опции использования спецификации при сохранении файла (или отметьте параметр с надписью «пропустить спецификацию»).

Если в отношении спецификации нет настроек, измените кодировку на ISO-8859-1 (также известен как ISO-latin1). Эта кодировка не использует спецификацию и идентична UTF-8 для всех символов ASCII (цифр, строчных и прописных букв без акцентов или диакритических знаков, знаков пунктуации, скобок, математических операторов, прямых кавычек и других специальных символов, используемых в программе языки).

Изменение кодировки никак не повлияет на код, ставящий вопрос.

1

Другие решения

Убедитесь, что библиотека GD установлена

if (extension_loaded('gd') && function_exists('gd_info')) {
echo "PHP GD library is installed on your web server";
}
else {
echo "PHP GD library is NOT installed on your web server";
}

0

  • Изображая петербург гоголем используется синекдоха какая ошибка
  • Изображая любой предмет художником создается точная его копия ошибка
  • Изнывая от скуки лексическая ошибка
  • Измеритель регулятор программный трм251 ошибка е220
  • Измеритель коэффициента ошибок прибор