2016-08-25 2 views
0

Я пытаюсь создать эскизы, которые будут созданы на сервере, а затем выводится в HTML для пользователей веб-сайта, но он возвращает код ... странную Моя функция:PHP - ImageCreateFromJPEG() возвращают странный код

function createthumbnail($n){ 
    list($width, $height) = getimagesize($n); 
    $newheight = 100; 
    $ratio = 100/$height; 
    $newwidth = $width*$ratio; 
    $im = imagecreatetruecolor($newwidth, $newheight); 
    switch(exif_imagetype($n)){ 
    case "jpg": 
     $foto_r = imagecreatefromjpg($n); 
    break; 
    case "png": 
     $foto_r = imagecreatefrompng($n); 
    break; 
    case "bmp": 
     $foto_r = imagecreatefromwbmp($n); 
    break; 
    default: 
     $foto_r = imagecreatefromjpeg($n); 
    } 
    if(!$foto_r){ 
     $im = imagecreatetruecolor($newwidth, $newheight); 
     $bgc = imagecolorallocate($im, 255, 255, 255); 
     $tc = imagecolorallocate($im, 0, 0, 0); 
imagefilledrectangle($im, 0, 0, 150, 30, $bgc); 
     imagestring($im, 1, 5, 5, 'Error loading ' . $n, $tc); 
    }else{ 
     imagecopyresampled($im, $foto_r, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); 
     imagejpeg($im, null, 100); 
    } 
    return $foto_r; 
} 

Вот пример кода Wierd: Wierd code example

+2

Это не странный код. Вы просто не сказали браузеру, что вы печатаете! Вам нужно отправить заголовок 'Content-Type'. Поместите это перед 'imagejpeg',' header ('Content-Type: image/jpeg'); ' –

+0

Тогда он ничего не печатает. Просто фоторамка в левой верхней части веб-сайта ... –

+0

Вот картинка вашего кода. Теперь идите на поиски проблемы, почему ваша функция не делает правильную миниатюру. : P –

ответ

1

Если я вижу, это правильно, то ваш сценарий создает HTML для вашего веб-страницы и эскиз в один проход? Наверное, что-то в этом роде?

<img src="<?php echo createthumbnail('path_to_the_image.jpeg'); ?>" alt="" /> 

Эскиз должен быть дополнительным файлом, поэтому еще один скрипт php, который генерирует изображение и заголовки изображений.

<img src="generatethumbnail.php?f=path_to_the_image.jpeg" alt="" /> 

Существует также «грязный» решение включить код изображения как base64 непосредственно в HTML код Embedding Base64 Images

Пример:

<img src="data:image/jpeg;base64,<?php 
echo base64_encode(createthumbnail('path_to_the_image.jpeg')); 
?>" alt="" /> 

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

+0

Работал! Большое спасибо!!! : 3 –

Смежные вопросы