imagecopyresized ожидает ошибки параметра: попытка сделать эскиз без искажения

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

<?php
$sql = mysql_query("SELECT * FROM images ORDER BY date DESC LIMIT 30");
$img = 'img/'; //this is where my files are.
while($row = mysql_fetch_array($sql))
{

$imageName = $img.$row['images'];
$tempImage = imagecreatetruecolor(150,150);
$thumbnail = imagecopyresampled($tempImage,$imageName,0,0,0,0,150,150,150,150);
echo $thumbnail;
?>
<div id='<?php echo $imageID; ?>' class='images' style=''>
<img src='<?php echo $imageName; ?>' style='height:150px;width:150px;'/>
</div>
<?php
}
?>

Вот так мой код выглядит сейчас, и мне нужна помощь. У меня есть код:

<img src='<?php echo $imageName; ?>' style='height:150px;width:150px;'/>

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

Когда я echo $thumbnail;, он дает мне imagecopyresized () ожидает ошибку параметра.

Спасибо за помощь :)


person hellomello    schedule 02.05.2011    source источник


Ответы (1)


Кажется, $imageName, который вы передаете, - это просто имя файла. Вы должны предоставить дескриптор изображения GD для обоих аргументов источника и назначения:

$src = imagecreatefromjpeg('somepicture.jpg');
$dst = imagecreatetruecolor(150,150);
$status = imagecopyresampled($dst, $src, etc....);
person Marc B    schedule 02.05.2011
comment
Я сделал $src = imagecreatefromjpeg('img/somepicture.jpg');, но на нем отображается только цифра 1? - person hellomello; 02.05.2011
comment
Этот номер является внутренним дескриптором GD изображения. это НЕ само изображение. - person Marc B; 02.05.2011
comment
Вы должны обслужить его с помощью отдельного запроса или сохранить его в файл и указать свой HTML-код на этот файл. Вы не можете создать изображение и использовать его в своем скрипте как есть - вы не можете (за некоторыми исключениями, которые НЕ применяются здесь) смешивать изображение и HTML в одном скрипте. - person Marc B; 02.05.2011