2012-01-05 2 views
3

У меня в настоящее время есть база данных, где я могу хранить изображения в ... Но страница PHP, которую я создал для их отображения ... не работает. Но когда я использую ссылку как scr для < img>, она показывает пустой кадр изображения. если я эхо изображения непосредственно, я получаю много странных знакиPHP отображение изображения из базы данных (средний blob)

пути я хочу, чтобы отобразить изображения является: «. $ ImageID» < IMG SRC = «image.php образом =» />

кода я использую для отображения изображения (image.php) является:.

<?php session_start(); 
if(!isset($_GET['image'])) 
{ 
    header("HTTP/1.0 404 Not Found"); 
} 
else{ 
    $link = mysql_connect('localhost', '45345345435435345', 'wewfsersdfds'); 
      if (!$link) { 
       echo "error"; 
       die; 
      } 

      $db_selected = mysql_select_db(Tha base, $link); 
      if (!$db_selected) { 
       echo "error"; 
       die; 
      } 
$nummer=(int)trim(stripslashes($_GET['image'])); 
$mynr=$nummer; 
$sql="SELECT * FROM Foto WHERE fotonr=$mynr"; 
$result=mysql_query($sql); 
if(!$result) 
{ 
    echo "error".mysql_error(); 
    header("HTTP/1.0 404 Not Found"); 
} 
else 
{ 

    $foto = mysql_fetch_assoc($result); 

    header("Content-type: ".$foto['type']); 
    echo $foto['image']; 


} 
} 
?> 

Я пробовал много уже, но это не будет работать :( я обновил код до последней версии Сделана ошибка с sql (не выбрал ничего/никогда не выполняет mysql_real_escape_string из int)

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

Может кто-нибудь мне помочь?

Thanx на ваше время!

+0

Почему вы храните изображения внутри базы данных? не имеет смысла хранить файл в вашей файловой системе и ссылку на путь этого файла в вашей базе данных? – dqhendricks

ответ

2

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

$fp = fopen($image_path, 'r'); 
$image = fread($fp, filesize($image_path)); 
$image = addslashes($image); 
fclose($fp); 

// save $image into DB. 

Не уверен, что вы похожи на файл_get_contents. Как я выхожу, похоже на то, как вы это делаете, только я использую ORM и фреймворк.

+1

текущий код im используется от кого-то другого, его $ content = file_get_contents ($ tmpName); \t \t \t $ data = unpack ("H * hex", $ content); \t \t \t $ mycontent = '0x'. $ Data ['hex']; и он работает, и размер хорош ... –

+0

Я никогда раньше не видел, чтобы это делалось так. Попробуйте использовать мой метод, а затем сохраните проблематичное изображение и попытайтесь его просмотреть. – md5madman

+1

То, что я получаю, это http://www.nac-verkeerscholen.nl/test/image.php?image=9 не знаю, правильно ли оно или неправильно ... но оно отличается от исходного изображения ... –

2

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

Вы пытались сохранить изображение, полученное через image.php, и сравнить двоичный файл с известным файлом изображения? Возможно, после того, как вы это сделаете, ответ будет очевидным (например, неправильная длина, поврежденный заголовок и т. Д.).

Возможно, вы захотите рассмотреть другую запись базы данных. Большинство db поддерживают хранение двоичных данных blob, которые вы могли бы просто вернуть. Это будет проще (и займет меньше места в вашем db!), Чем использование php-функций для подражания и imagecreatefromstring.

Кроме того, я считаю, что вы пытаетесь использовать imagegif, imagejpeg, imaging для преобразования изображений для вас. Я не понимаю, как они работают, основываясь на моем чтении: http://php.net/manual/en/function.imagecreatefromstring.php. Попробуйте сохранить и получить один и тот же формат, чтобы узнать, является ли это вашей проблемой.

Посмотрите на Content-type. Я думаю, что это чувствительно к регистру. Попробуйте Content-Type. http://en.wikipedia.org/wiki/List_of_HTTP_header_fields

+0

ну, строка, которую я верну сейчас, имеет нужный размер, но если я попытаюсь вставить ее в txt, а chaning txt в формат изображения это было ... это не сработает. Вы говорите «поддержка хранения двоичного blob», вы имеете в виду blob (слишком маленький) или двоичный тип данных. И нет никакой imageconversion, несколько форм изображений хранятся в базе данных (наряду с их imagetype), просто пытаясь отобразить что-то ...спасибо за помощь;) –

+0

Используя некоторый инструмент MySQL, вы можете вытащить строку изображения и сравнить ее с вашей восстановленной строкой? Они одинаковы? Можете ли вы привести пример типа контента, который вы используете? – Fletch

+0

Ну, я вытащил строку ... и ее отличие от того, как выглядит изображение, когда я его открываю. Поскольку на изображении много неподписанных символов, а образ из db имеет все известные символы ... это это различие между ANSI или чем-то еще? –

0
$sql = "SELECT * FROM Foto WHERE fotonr=$mynr"; 
     $result = $conn -> query($sql); 
     while ($row = $result -> fetch_assoc()) { 
     $img= '<img src="data:image/jpeg;base64,'.base64_encode(      $row['image']).'" width=350px0px height=300px/>'; 
} 
echo $img; 
Смежные вопросы