$size) { $watermark = isset($size[3]) ? $watermarkDir . $size[3] : ''; $watermark = $noWatermark ? '' : $watermark; self::imgResize( $srcdir . $imgName, // Source - original image $uploaddir . $dir . '/' . $imgName, // Destination $size[0], // X $size[1], // Y $size[2], // Quality $watermark// Watermark ); } return TRUE; // o_O } public static function createCustomSize($imgFullName, $x, $y) { self::imgResize( $imgFullName, null, $x, $y ); } /** * Создаёт аватарку из ссылки. Размеры 100*100 * @param string $src * @param string $target */ public static function createAvatar($src, $target) { return self::imgResize($src, $target, 100, 100, 100); } /** * Функция img_resize(): генерация thumbnails * Параметры: * $src - имя исходного файла * $dest - имя генерируемого файла * $width, $height - ширина и высота генерируемого изображения, в пикселях * Необязательные параметры: * $quality - качество генерируемого JPEG, по умолчанию 90; максимальное 100; */ private static function imgResize($src, $dest, $width, $height, $quality = 90, $watermark = '') { if (!Helper::isUrl($src) && !file_exists($src)) { return false; } $size = getimagesize($src); if ($size === false) return false; // Определяем исходный формат по MIME-информации, предоставленной // функцией getimagesize, и выбираем соответствующую формату // imagecreatefrom-функцию. $format = strtolower(substr($size['mime'], strpos($size['mime'], '/') + 1)); $icfunc = "imagecreatefrom" . $format; if (!function_exists($icfunc)) return false; $x_ratio = $width / $size[0]; $y_ratio = $height / $size[1]; $ratio = max($x_ratio, $y_ratio); $use_x_ratio = ($x_ratio == $ratio); $new_width = $use_x_ratio ? $width : floor($size[0] * $ratio); $new_height = !$use_x_ratio ? $height : floor($size[1] * $ratio); $new_left = $use_x_ratio ? 0 : floor(($width - $new_width) / 2); $new_top = !$use_x_ratio ? 0 : floor(($height - $new_height) / 2); $isrc = $icfunc($src); $idest = imagecreatetruecolor($width, $height); imagefill($idest, 0, 0, 0xFFFFFF); imagecopyresampled($idest, $isrc, $new_left, $new_top, 0, 0, $new_width, $new_height, $size[0], $size[1]); if ($watermark) { $stamp = imagecreatefrompng($watermark); $marge_right = 10; $marge_bottom = 2; $sx = imagesx($stamp); $sy = imagesy($stamp); imagecopy($idest, $stamp, imagesx($idest) - $sx - $marge_right, imagesy($idest) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp)); } //$iofunct = "image".$format; //$iofunct($idest, $dest, $quality); if ($dest) { imagejpeg($idest, $dest, $quality); } else { header('Content-Type: image/jpeg'); imagejpeg($idest); die; } imagedestroy($isrc); imagedestroy($idest); return true; } }