2015-12-29 3 views
-2

Я пытаюсь создать эскиз изображения, но он почему-то не работает. Что я делаю не так?Создание миниатюры изображения

<?php 

function make_thumb($src, $dest, $desired_width) { 

/* read the source image */ 
$source_image = imagecreatefromjpeg($src); 
$width = imagesx($source_image); 
$height = imagesy($source_image); 

/* find the "desired height" of this thumbnail, relative to the desired width */ 
$desired_height = floor($height * ($desired_width/$width)); 

/* create a new, "virtual" image */ 
$virtual_image = imagecreatetruecolor($desired_width, $desired_height); 

/* copy source image at a resized size */ 
imagecopyresampled($virtual_image, $source_image, 0, 0, 0, 0, $desired_width, $desired_height, $width, $height); 

/* create the physical thumbnail image to its destination */ 
imagejpeg($virtual_image, $dest); 

} //end of function make_thumb($src, $dest, $desired_width) 

make_thumb("uploads/643Full-HD-Space-Wallpapers-Widescreen.jpg", "test", 100); 

?> 
+0

make_thumb функция путь изображения правильный, если он будет ../uploads –

ответ

2

Ваша функция работает для меня, однако, я должен был дать в качестве целевого расширения в формате JPEG для того, чтобы быть действительным JPEG изображение:

//---------------------------------------------------------------------vvv 
make_thumb("uploads/643Full-HD-Space-Wallpapers-Widescreen.jpg", "test.jpg", 100); 

EDIT:

Основываясь на ваших комментариях, это будет полная функция:

function make_thumb($src, $dest, $desired_width) 
    { 
     // Make directory if not made 
     if(!is_dir($dest)) 
      mkdir($dest,0755,true); 
     // Get path info 
     $pInfo = pathinfo($src); 
     // Save the new path using the current file name 
     $dest = $dest."/".$pInfo['basename']; 
     // Do the rest of your stuff and things... 
     $source_image = imagecreatefromjpeg($src); 
     $width = imagesx($source_image); 
     $height = imagesy($source_image); 
     $desired_height = floor($height * ($desired_width/$width)); 
     $virtual_image = imagecreatetruecolor($desired_width, $desired_height); 
     imagecopyresampled($virtual_image, $source_image, 0, 0, 0, 0, $desired_width, $desired_height, $width, $height); 
     imagejpeg($virtual_image, $dest); 
    } 

// Create file here 
make_thumb("http://res.cloudinary.com/demo/image/upload/w_250,q_90/happy_dog.jpg", "test", 100); 
+0

Место назначения - это папка с именем test. – frosty

+0

Затем вам нужно выполнить 'test/whatever.jpg', и если папка не создана, вы должны использовать' mkdir() '. – Rasclatt

+0

Вам нужно будет извлечь имя файла с помощью 'pathinfo ($ src)' или what-have-you, если вы хотите, чтобы имя было автоматически сохранено в качестве оригинала. – Rasclatt

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