За последние 24 часа нас посетили 17746 программистов и 1676 роботов. Сейчас ищет 851 программист ...

Как правильно вывести картинку в PHP

Тема в разделе "PHP для новичков", создана пользователем SV4, 4 окт 2011.

  1. SV4

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

    С нами с:
    24 сен 2011
    Сообщения:
    59
    Симпатии:
    0
    Адрес:
    Красноярск
    Проблема с выводом картинки на экран.
    Код следующий:
    <?php
    $p=dirname(__FILE__).'/fon.png';
    $f=imagecreatefrompng("$p");
    Header("Content-type: image/png");
    Imagepng($f);
    ?>
    При попытке запустить, пишет следующее:
    Warning: Cannot modify header information - headers already sent by (output started at /home/i/домен/WWW/папка/папка/папка/папка/скрипт.php:1) in /home/i/домен/WWW/папка/папка/папка/папка/скрипт.php on line 107
    После этой надписи, целая страница каракулей.
    На линии 107, у меня вот эта часть Header("Content-type: image/png");
    Кто, что может подсказать?
     
  2. karakh

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

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    а где-то до этой линии у тебя какой-то output. Ищи выше 107 строки echo, print или просто ошибку в коде.
     
  3. SV4

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

    С нами с:
    24 сен 2011
    Сообщения:
    59
    Симпатии:
    0
    Адрес:
    Красноярск
    Выше имеются функции типа: file, in_array, fopen, or exit, fputs, flock, fclose, может они сбивают Header?
    Функций вывода на экран, типа print, echo, нет.
    Код на ошибки проверил, ничего не нашел.
     
  4. karakh

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

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    у. проверь в какой кодировке сохранен файл. Если в utf with BOM то пересохрани без BOM
    и посмотри нет ли у тебя каких-нибудь символов в самом начале файла. Пробелы там или табы перед первым <?
    Это же тоже output
     
  5. SV4

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

    С нами с:
    24 сен 2011
    Сообщения:
    59
    Симпатии:
    0
    Адрес:
    Красноярск
    Ну все, проблема решилась!
    Так и есть, что перед первым <?, существовал пробел.
    Я и не думал, что просто пробел в коде,так сильно влияет на Header. Буду теперь аккуратней.
    Спасибо за помощь!
     
  6. SV4

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

    С нами с:
    24 сен 2011
    Сообщения:
    59
    Симпатии:
    0
    Адрес:
    Красноярск
    Эх рано обрадовался.
    Все работает только в пустом окне браузера, а если вставить в страницу, то проблема повторяется,
    и снова выводятся одни каракули.
     
  7. Gromo

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

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    SV4
    ты хочешь вывести картинку посреди хтмл документа ?
    в таком случае возможно стоит почитать про основы хтмл
    и каким образом выводятся изображения в тексте.
     
  8. TanyuShic

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

    С нами с:
    6 окт 2011
    Сообщения:
    1
    Симпатии:
    0
    Супер! Помогли! :)
     
  9. SV4

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

    С нами с:
    24 сен 2011
    Сообщения:
    59
    Симпатии:
    0
    Адрес:
    Красноярск
    Все понятно теперь!
    Надо было подключать через тег <img src=.....> :--)
     
  10. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Пример того, как можно встроить картинку прямо в сам html документ, без дополнительного обращения к серверу за подгрузкой картинки:
    PHP:
    1. <?php
    2. $imgName = 'image.jpg';
    3. $path = dirname(__FILE__);
    4. $info = getimagesize($path . DIRECTORY_SEPARATOR . $imgName);
    5. $data = base64_encode(file_get_contents($path . DIRECTORY_SEPARATOR . $imgName));
    6. ?>
    7. <img src="data:<?php echo($info['mime']); ?>;base64,<?php echo($data); ?>" />
     
  11. Gromo

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

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    sobachnik
    как вариант. только при этом хтмл документ утяжеляется, а картинка никогда не будет кешироваться