За последние 24 часа нас посетили 17956 программистов и 1576 роботов. Сейчас ищут 912 программистов ...

Отобразить поле типа BLOB из таблицы mysql на страничке

Тема в разделе "Обработка изображений средствами PHP", создана пользователем Alex7y, 28 янв 2008.

  1. Alex7y

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

    С нами с:
    28 янв 2008
    Сообщения:
    10
    Симпатии:
    0
    Ребят, долго думал в какую тему запостить, кароч суть дела:
    Когда пытаюсь показать содержимое поля из mysql типа blob с помощью функции echo - оно естессно выдает мне 16-чный код картинки...
    Внимание вопрос: Как сделать так чтобы изображалсь картинка? а не код...


    З.Ы. : подсказали мне что это делает с помощью модуля BD, функцией imagefromstring или чтото подобное.... подскажите плиз как ;)

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

    заранее спасибо!
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    в поиск! заранее незачто
     
  3. Alex7y

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

    С нами с:
    28 янв 2008
    Сообщения:
    10
    Симпатии:
    0
    искал :) видать неповезло ;) заранее незачто!
     
  4. Anonymous

    Anonymous Guest

    Золотые слова. Пусть база будет базой, а не хранилищем картинок.
     
  5. Alex7y

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

    С нами с:
    28 янв 2008
    Сообщения:
    10
    Симпатии:
    0
    Но ведь можно, я точно знаю что можно.... в инете искал, серьёзно.. ) думал вы тож поможете.. блин придеца в папке картинки хранить
    тем более что в mysql это предусмотрено.. :) база на то и база что в ней все хранится, а не по частям на винте
     
  6. Anonymous

    Anonymous Guest

    Зачем? Что бы ты к нам прибежал через месяц с криками "Как мне оптимизировать базу, у меня при 20 посетителях мускул падает, ааааааа!!!!!!11111одинодин"? Да нафиг нам это нужно...
     
  7. shreck

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

    С нами с:
    7 авг 2007
    Сообщения:
    479
    Симпатии:
    0
    Адрес:
    Россия, Саратов
    Вот скажи мне, зачем тебе в базе картинка? да храни ты в базе путь до картинки, а саму ее на сервере, а то

    ну и собственно респект господину Горбунову Олегу за

     
  8. Alex7y

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

    С нами с:
    28 янв 2008
    Сообщения:
    10
    Симпатии:
    0
    спасибо :) так и сделал ;) хотя вопрос все таки остается открытым.... сугубо ради спортивного интереса ;)
     
  9. Anonymous

    Anonymous Guest

    Alex7y, ммм предлагаю пойти прищемить яйца дверью. Чисто из спортивного интереса.
     
  10. RomanBush

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

    С нами с:
    5 дек 2007
    Сообщения:
    798
    Симпатии:
    0
    Адрес:
    200 км от Москвы
    А исчо можно хранить .bmp в xml. Примерно так:
    <bmp><line><offsetx offset="0"><offsety offset="0><RGB><R>0</R><G>0</G><B>0</B>... и т.д.
    (с) bash.org.ru
     
  11. BS

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

    С нами с:
    10 апр 2008
    Сообщения:
    149
    Симпатии:
    0
    Что-то все постебались над автором поста, но никто так и не ответил.
    А между тем Том Кайт, евангелист оракла заявляет, что все нужно хранить в базе данных, что они там у себя в Oracle все файлы и документы хранят в базе, мол файловая система - это ненадежная и медленная штука.
    Я конечно понимаю, что mysql это далеко не oracle, но это его недостаток. И сам вопрос не лишен в общем-то смысла, как тут многим показалось.

    а по существу вопроса - раньше вроде была возможность вставлять прямо в html бинарные данные картинки, это даже давало возможность показывать картинки, даже если они у пользователя отключены, возможно это было какая-то нестандартная фича IE, по крайней мере давно я об этом не слышал.
    Поскольку php с первым текстом страницы отправляет заголовок header("Content-type: text/html") то картинку уже тут нигде не вставишь, только через тэг <img>.
    Поэтому надо написать отдельный скрипт, скажим img.php, который будет выдавать правильный заголовок (header("Content-type: image/jpeg")) читать картинку из базы и выдавать ее.
    А в основном документе выводить ее посредством <img src="img.php">
    Поправьте, если я ошибся
     
  12. topas

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

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    Простите, а где же тогда хранятся файлы бд? А кэширование файлов уже отменили?

    На локальной машине, может быть, и буду хранить свои файлы. То же относится и к небольшой ЛВС.
    Но вешать на сайт такую х... такой функционал, нет уж, спасибо.
     
  13. BS

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

    С нами с:
    10 апр 2008
    Сообщения:
    149
    Симпатии:
    0
    У оракла, насколько я помню (как кстати и у многих других СУБД) своя файловая система - и это более низкий уровень, о котором пользователю знать не обязательно
     
  14. topas

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

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    Я в этом вопросе ламер последний.

    Хотя нет... не последний :)

    PS> а еще у оракла своя ось для базы, которая крутится на nix'e :) (опять таки: мне так кажется) :)
     
  15. BS

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

    С нами с:
    10 апр 2008
    Сообщения:
    149
    Симпатии:
    0
    Конечно все нужно делать целесообразно, из пушки по воробьям не палить, просто мне непонятен весь этот негатив к , в общем то, не дурацкому вопросу.
     
  16. topas

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

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    Постараюсь привести аналогию:

    Все ходят на зеленный свет. Все счастливы и довольны.
    Появляется чудак, который спрашивает: а как перейти на красный?
    Ему объясняют, что это не целесообразно.
    Он противится, говорит: ну ради спортивного интереса.

    Теперь вопрос: а смысл?
     
  17. BS

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

    С нами с:
    10 апр 2008
    Сообщения:
    149
    Симпатии:
    0
    неверная аналогия

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

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

    Потому что автор точно так же мог читать картинку не из блоба, а из файла, находящуюся за пределами корневого каталога web-сервера (ну мало ли из каких соображений) и точно так же вставляет ее в страницу и ничего не получается.
     
  18. Alex7y

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

    С нами с:
    28 янв 2008
    Сообщения:
    10
    Симпатии:
    0
    BS спасибо большое за понимание :) а насчет красного цвета - действительно аналогия неверная! с точки зрения целостности данных действитлеьно все должно быть в базе данных. а с точки зрения повышения работоспособности естессно картинки пихать в базы крайне неудобно и медленно.. Однако есть такая фишка в модуле BD называется imagefromstring. вот только я не могу до конца понять как ей пользоваться :)


    p.s. и не надо смеяться... каждый когдато начинал! :p
     
  19. BS

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

    С нами с:
    10 апр 2008
    Сообщения:
    149
    Симпатии:
    0
    Alex7y, если я не ошибаюсь, то ты все равно не сможешь одновременно вывести текст и картинку.
    Вот можно сделать так:

    1-й html документ (все равно каким способом сформированный) содержит:

    Код (Text):
    1. <img src='get_img_from_blob.php'>
    2-й get_img_from_blob.php следующего содержания:

    Код (Text):
    1. require("config.php");
    2. $stmt=mysqli_query($conn,'select img from images where id=1');
    3. header("Content-type: image/jpeg");
    4. echo(current(mysqli_fetch_row($stmt)));
    5. mysqli_free_result($stmt);
    я проверил - работает :)
     
  20. EugeneTM

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

    С нами с:
    19 апр 2008
    Сообщения:
    85
    Симпатии:
    0
    Ну не так все однозначно с картинками в файловой системе.
    Пока у тебя 10 000 ... 20 000 ... 300 000 файлов все Ок.
    А когда 10 000 000, что тебе файловая система скажет ....

    Не просто так на ЖЖ все в базе. Там кстати MySQL.

    http://www.livejournal.com/doc/server/l ... a.ref.html
     
  21. topas

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

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    EugeneTM
    угу, а еще можно держать отдельный сервер под картинки :)
     
  22. Johnatan

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

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
    Что-то мне это напоминает...