2013-08-19 5 views
0

Я написал код для изменения размера изображения (в соответствии с руководством PHP), но я не могу получить изображение для отображения. Я знаю, что данные изображения существуют, поскольку я могу видеть это, когда я повторяю $ thumb, но я не могу представить фактическое изображение для отображения.header (Content-type: image/jpeg) не работает

Это код, который я использовал:

$row = mysql_fetch_array($result); 
$image = $row["image"]; 
echo $image; 
echo $row["name"]; 

list($width, $height) = getimagesize($image); 

$newwidth = $width * 0.1; 
$newheight = $height * 0.1; 

$thumb = imagecreatetruecolor($newwidth, $newheight); 
$source = imagecreatefromjpeg($image); 

imagecopyresized($thumb, $source, 0,0,0,0, $newwidth, $newheight, $width, $height); 
header('Content-Length: '.strlen($thumb), true); 
header("Content-type: image/jpeg"); 
echo imagejpeg($thumb); 

Спасибо за любую помощь

+0

Снимите 'echo'. 'imagejpeg ($ thumb)' будет достаточно (если $ thumb является надлежащим ресурсом изображения) –

+0

Посмотрите, что вы действительно отправляете, либо путем сохранения в файл, либо с помощью сетевого сниффера. Когда что-то не работает, всегда смотрите точно на то, что на самом деле производится, не оставайтесь на мета-уровне («не работает»). Является ли контент, который отправляется _really_ a jpeg? Нет. И вы можете видеть, что если вы посмотрите на контент. – arkascha

+0

Пробовал удалять эхо, но потом я просто получаю данные не фактическое изображение, но спасибо в любом случае. – Sarita

ответ

2
  1. Удалить \t из $thumb
  2. Вы не можете печатать строки в файле формата JPEG. Поэтому удалите echo $image; и echo $row["name"];.
  3. Вы можете положить этот код в другой файл и использовать его в качестве изображения.

index.php:
$row = mysql_fetch_array($result);
$image = $row["image"];
echo $image;
echo $row["name"];
echo '<img src="image.php">';

image.php:



    $row = mysql_fetch_array($result); 
    $image = $row["image"]; 

    list($width, $height) = getimagesize($image); 
    $newwidth = $width * 0.1; 
    $newheight = $height * 0.1; 
    $thumb = imagecreatetruecolor($newwidth, $newheight); 
    $source = imagecreatefromjpeg($image); 
    imagecopyresized($thumb, $source, 0,0,0,0, $newwidth, $newheight, $width, $height); 

    $h = str_replace('\t','',$thumb); 

    header('Content-Length: '.strlen($h), true); 
    header("Content-type: image/jpeg"); 
    imagejpeg($thumb); 

+0

Я попробую ваше предложение. Спасибо – Sarita

+0

Спасибо всем за помощь. Мне удалось решить проблему сейчас, используя функцию, которая просто берет размер изображения и задает свойства ширины и высоты тега img пропорциональному размеру. Я знаю, что это не изящно, но изображения загружаются из базы данных, поэтому я уже знаю, что они jpeg, поэтому не стоит беспокоиться о том, что пользователь пытается загрузить другие типы файлов. – Sarita

+0

Добро пожаловать :) Пожалуйста, отметьте этот ответ как принятый, если ответ правильный. большое спасибо –