2016-05-15 3 views
0

Я хотел создать миниатюру с определенной пользовательской шириной & height. Функция am используется только для создания эскиза с максимальной установленной шириной/высотой.Как создать пользовательские миниатюры с помощью php gd

Как настроить нижнюю функцию, чтобы дать мне определенную ширину/высоту, например, 50x50, 75x75, 100x100.

$original_photo = "photos/photo.extension"; 
$newcopy = "photos/thumbnails/photo.extension"; 
$copy_w = 50; 
$copy_h = 50; 
$extension = explode('.', 'photo.extension'); 
$extension = end($extension); 

function create_thumbnail($original_photo, $newcopy, $copy_w, $copy_h, $extension) { 
    list($original_w, $original_h) = getimagesize($original_photo); 
    $scale_ratio = $original_w/$original_h; 
    if (($copy_w/$copy_h) > $scale_ratio) { 
     $copy_w = $copy_h * $scale_ratio; 
    } else { 
     $copy_h = $copy_w/$scale_ratio; 
    } 
    $img = ''; 
    if ($extension == 'gif') { 
     $img = imagecreatefromgif($original_photo); 
    } elseif ($extension == 'png') { 
     $img = imagecreatefrompng($original_photo); 
    } else { 
     $img = imagecreatefromjpeg($original_photo); 
    } 
    $true_color = imagecreatetruecolor($copy_w, $copy_h); 
    imagecopyresampled($true_color, $img, 0, 0, 0, 0, $copy_w, $copy_h, $original_w, $original_h); 
    if (imagejpeg($true_color, $newcopy, 80) == true) { 
     return true; 
    } else { 
     return false; 
    } 
} 
+0

Добро пожаловать в StackOverflow! Пожалуйста, прочитайте [Как задать хороший вопрос?] (Http://stackoverflow.com/help/how-to-ask) –

ответ

0

Работа с изображениями в PHP/GD может быть болью. Есть много краевых случаев, особенно при использовании прозрачных PNG/GIF.

Если возможно, я бесстыдно рекомендую библиотеку, которую я написал для обработки вещи, как это: SimpleImage 3.0

Использование SimpleImage, вы можете достичь желаемого эффекта с помощью следующего кода:

// Load the image from image.jpg 
$image = new \claviska\SimpleImage('image.jpg'); 

// Create a 50x50 thumbnail, convert to PNG, and write to thumbnail.png 
$image->thumbnail(50, 50)->toFile('thumbnail.png', 'image/png'); 

См this page более подробности о том, как работает метод thumbnail и доступные аргументы.

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