Требуется imagick.
$image[\'md5\'] - название файла
200 - ширина получившейся картинки
function parse_make_thumb($image) {
// создаем превью
if ($image['width'] <= 200) {
file_put_contents("thumbs/".$image['md5'].".".$image['type'], file_get_contents("images/".$image['md5'].".".$image['type']));
return;
} else {
$xscale = $image['width'] / 200;
$new_width = round($image['width'] * (1 / $xscale));
$new_height = round($image['height'] * (1 / $xscale));
}
$thumb = new Imagick();
try {
$thumb->readImage("images/".$image['md5'].".".$image['type']);
}
catch (ImagickException $e) {
echo "<center><h3>Непотянуло файл: ".$image['md5'].".".$image['type']."</h3></center>";
return 0;
}
//делаем превью, размер меньше, чем у фона, чтобы было куда впихнуть тень
// $thumb->thumbnailImage($new_width, $new_height);
if ($thumb->getNumberImages() > 1) {
foreach ($thumb as $frame) {
$frame->resizeImage($new_width, $new_height, Imagick::FILTER_TRIANGLE, 1);
}
//записываем картинку
$thumb->writeImages("thumbs/".$image['md5'].".".$image['type'], 1);
} else {
// $thumb->resizeImage($new_width, $new_height, Imagick::FILTER_TRIANGLE, 1);
try {
$thumb->thumbnailImage(200, null);
}
catch (ImagickException $e) {
echo "<center><h3>Непотянуло файл: ".$image['md5'].".".$image['type']."</h3></center>";
return 0;
}
$thumb->writeImage("thumbs/".$image['md5'].".".$image['type']);
}
//подчищаем за собой
$thumb->destroy();
return;
}