Все разделы | CMS Joomla 2.5 | Общее | PHP | Javascript + jQuery
23 марта 2015
Хорошим решением данной задачи было бы использование функций библиотеки Imagemagick, но не всегда данная библиотека установлена на сервере и вот тут приходится выкручиваться. В этой статье представляю функцию кропления изображения (изменения размеров картинки с отсечением лишних краев).
Код самой функции:
function imageresize($outfile,$infile,$neww,$newh,$quality,$extension) {
if (mb_strtolower($extension) == 'jpg' || mb_strtolower($extension) == 'jpeg') {
$im = imagecreatefromjpeg($infile);
}
if (mb_strtolower($extension) == 'png') {
$im = imagecreatefrompng($infile);
}
if (mb_strtolower($extension) == 'gif') {
$im = imagecreatefromgif($infile);
}
$thumb_width = $neww;
$thumb_height = $newh;
$width = imagesx($im);
$height = imagesy($im);
$original_aspect = $width / $height;
$thumb_aspect = $thumb_width / $thumb_height;
if ( $original_aspect >= $thumb_aspect )
{
$new_height = $thumb_height;
$new_width = $width / ($height / $thumb_height);
}
else
{
$new_width = $thumb_width;
$new_height = $height / ($width / $thumb_width);
}
$im1 = imagecreatetruecolor( $thumb_width, $thumb_height );
imagecopyresampled($im1,
$im,
0 - ($new_width - $thumb_width) / 2,
0 - ($new_height - $thumb_height) / 2,
0, 0,
$new_width, $new_height,
$width, $height);
imagejpeg($im1,$outfile,$quality);
imagedestroy($im);
imagedestroy($im1);
}
Функция принимает файл и сохраняет его на сервере в указанном месте.
Использование функции:
imageresize(
$outfile,$infile,$neww,$newh,$quality,$extension);
где:
$outfile - полный путь до картинки, которая будет получена в результате исполнения скрипта,
$infile - полный путь до картинки, которую необходимо отдать скрипту,
$neww - ширина изображения на выходе, только цифры,
$newh - высота изображения на выходе, только цифры,
$quality - качество картинки на выходе, только цифры от 10 до 100,
$extension - расширение файла, например jpg.