Получить изображение и загрузить его в HTML-страницу - PullRequest
0 голосов
/ 05 октября 2009

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

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

$query = "select bin_data from imageupload where Id=1;";
$result = mysql_query($query, $con);
$result_data = mysql_fetch_array($result, MYSQL_ASSOC);
header("Content-type: image/jpeg") ;
echo $result_data['bin_data'];

Ответы [ 3 ]

1 голос
/ 05 октября 2009

Это шаги, которые выполняет этот код

  1. Копирует исходное изображение
  2. Рассчитывает размеры изображения
  3. Изменение размера изображения (вы указываете максимальную высоту / ширину)
  4. Сохраняет соотношение сторон
  5. Записывает конечное изображение

Это было создано из различных фрагментов кода Я нашел здесь на php.net и в других местах в Интернете.
Я не принимаю кредит на любой из этого кода, кроме положить кусочки вместе. http://www.php.net/manual/en/function.getimagesize.php

    <?php

$source_pic = 'images/source.jpg';
$destination_pic = 'images/destination.jpg';
$max_width = 500;
$max_height = 500;

$src = imagecreatefromjpeg($source_pic);
list($width,$height)=getimagesize($source_pic);

$x_ratio = $max_width / $width;
$y_ratio = $max_height / $height;

if( ($width <= $max_width) && ($height <= $max_height) ){
    $tn_width = $width;
    $tn_height = $height;
    }elseif (($x_ratio * $height) < $max_height){
        $tn_height = ceil($x_ratio * $height);
        $tn_width = $max_width;
    }else{
        $tn_width = ceil($y_ratio * $width);
        $tn_height = $max_height;
}

$tmp=imagecreatetruecolor($tn_width,$tn_height);
imagecopyresampled($tmp,$src,0,0,0,0,$tn_width, $tn_height,$width,$height);

imagejpeg($tmp,$destination_pic,100);
imagedestroy($src);
imagedestroy($tmp);

?>
1 голос
/ 06 октября 2009

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

<img src="theimage.jpg" style="width:100px; height:100px;" />

Современные браузеры фильтруют изображение, чтобы оно выглядело хорошо при изменении размера.

Если вы хотите сохранить соотношение сторон и обрезку, сделайте это:

<div style="width:100px; height:100px; overflow:hidden; display:inline-block;">
  <img src="theimage.jpg" style="width:100px;" />
</div>

Также рассмотрите возможность использования ответа Pasta плюс кэш изображений. Изменение размера только одного изображения без потери оригинала.

0 голосов
/ 05 октября 2009

Вы можете использовать PHP gd модуль для этого. См. Функцию imagecopyresampled и примеры в документации.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...