Идея в том, чтобы вывести в браузер из БД картинки. Испольную локальный сервер на ПК. Пробую разные варианты, но пока ничего не получается. Вот 2 варианта из множества. Вариант кода №1: PHP: <?php mysql_connect('localhost','root',''); $res = mysql_select_db('images'); //var_dump($res); $res = mysql_query("SELECT * FROM img"); //var_dump($res); while (false !== ($row = mysql_fetch_array($res))) { echo "<a href='page.php'>$row[name]</a>"; echo '<br>'; echo "<img src=$row[samfile]"; } ?> При использовании этого кода в браузере выводятся кракозябры. Вариант кода №2: PHP: <?php mysql_connect('localhost','root',''); $res = mysql_select_db('images'); //var_dump($res); $res = mysql_query("SELECT * FROM img ORDER BY id DESC"); //var_dump($res); while (false !== ($row = mysql_fetch_assoc($res))) { $show_img = base64_encode($row['samfile']);?> <img src="data:image/jpeg;base64, <?php echo $show_img ?>" alt="" /> <?php } ?> При использовании этого кода в браузере выводятся изображения, но в урезанном виде. Если эти картинки выводить из папок, то они нормально отображаются. Проблема, только с их выводом из БД. БД выглядит так: Как сделать, чтобы изображения номально выводилмсь из БД? Желательно, в уменьшенном виде (хотя это уже немного другой вопрос).
Не лучшая идея хранить изображения в бд. А вас не смущают размеры изображений в бд, они и на диске столько занимают? Чтоб браузер понял, что ему отдают картинку - нужно соответствующий заголовок передать. С base64 уже ближе к истине Но если вы точно и правильно указываете тип изображения, то есть указываете jpeg а в бд точно jpeg? Ну ещё base64 занимает больше места, минимум на 30% Поэтому не извращайтесь а делайте как все - храните файлы на диске, а в бд только пути до них
Добрый день! Я сейчас (как Вы, наверное. уже поняли) нахожусь. всего лишь, на стадии обучения, поэтому особо не задумываюсь над вопросом, где лучше хранить изображения, а просто стараюсь выполнить задание. Но, за замечание спасибо. Учту. Когда размещал изображения в БД, то, тоже, не особо задумывался над их размером. Просто с жёсткого диска туда загрузил. Когда в БД нажимаю на файл с изображением, то он скачивается на компьютер с расширением .BIN. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Не то? Эти изображения я взял со своего компьютера (они там в формате jpeg). Только, если я случайно изменил их формат... Не знаю, как это теперь понять, какие они там? Указал в Бд их тип - BLOB. То есть, цели изменять формат изображений не было. Что, base32 правильнее указать?
У BLOB ограниченный размер, 2^16 + 2 байта. Могли не поместится и обрезаться. Не. Самый правильный вариант - изображения на диске, в базе - пути.
Частично, удалось решить задачу. Изображения выводятся. И выводятся в уменьшенном виде. В БД изменил тип данных с BLOOB на LONGBLOOB. В результате чего объём изображений в БД значительно увеличился. А уменьшенный выводимый размер скорректировался просто установкой длины и ширины в коде. В общем - всё, как и нужно было. Но, образовалась следующая проблема, о которой я создам уже другую тему...