Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $filename = './'.$fold.'/' . mt_rand(100,999) . date('YmdHis') . mt_rand(100,999) . '.' . $match[1]; //создаем уникальное имя
- function imageResize(array $src, $fold, $width, $height, $crop=0) {
- //обозначиваем папку и копируем исходное
- if( empty($src['tmp_name']) || !empty($src['error']) || !preg_match('~.(jpe?g|png|gif)$~i', $src['name'], $match) ) {
- $retimg = "error0";
- return $retimg; //если нет файла возвращяем ошибку нуль
- } else {
- $filename = './'.$fold.'/' . mt_rand(100,999) . date('YmdHis') . mt_rand(100,999) . '.' . $match[1]; //создаем уникальное имя
- if (FALSE == move_uploaded_file($src['tmp_name'], $filename)) {
- $retimg = "error1";
- return $retimg;} // двигаем картинку если ошибка выдаем ошибку один
- //начинаем ресайз!
- if(!($info = getimagesize($filename))){ //проверка размеров
- if(file_exists($filename)) { @unlink($filename); }
- $retimg = "error2";
- return $retimg; //если нет размера возвращяем ошибку дуа
- }
- $w = $info[0];
- $h = $info[1];
- //еще меньше ? прерываем ресайз !
- if($w < $width && $h < $height) {
- $retimg = $filename;
- return $retimg;
- } else {
- //если ресайз нужен то продолжаем!
- $type = $match[1] == 'jpg' ? 'jpeg' : $match[1];
- $create = 'imagecreatefrom' . $type;
- $img = $create($filename);
- //вычисляем
- if($crop){
- $ratio = max($width/$w, $height/$h);
- $h = $height / $ratio;
- $x = ($w - $width / $ratio) / 2;
- $w = $width / $ratio;
- } else {
- $ratio = min($width/$w, $height/$h);
- $width = $w * $ratio;
- $height = $h * $ratio;
- $x = 0;
- }
- $new = imagecreatetruecolor($width, $height);
- // прозрачность для гиф и пинг
- if($type == 'gif' || $type == 'png') {
- imagecolortransparent( $new, imagecolorallocatealpha($new, 0, 0, 0, 127) );
- imagealphablending( $new, false );
- imagesavealpha( $new, true );
- }
- //сохраняем чьл получилось
- imagecopyresampled( $new, $img, 0, 0, $x, 0, $width, $height, $w, $h );
- $save = 'image' . $type;
- $save = $save($new, $filename);
- $retimg = $filename;
- return $retimg;
- }
- }
- $size=getimagesize($filename); // тут берем параметры нужной картинки
- // определяем сжатие, если нам нужно соблюсти пропорции, установив рамки картинки, т.е. размеры могут картинки не смогут быть больше указанных
- $x=$size[0]/300;
- $y=$size[1]/200;
- $w=300;
- $h=$w*$size[1]/$size[0];
- if ($x<$y) {
- $h=200;
- $w=$h*$size[0]/$size[1];
- }
- // либо ставим жесткие размеры, если нужно уменьшить картинку и обрезать лишнее
- /*
- $w = 300;
- $h = 200;
- */
- ResizeImage($filename, $w, $h);
- function ResizeImage($filename, $w, $h) {
- $ratio = $w/$h;
- $dest_img = imagecreatetruecolor($w, $h);
- imagefill($dest_img, 0, 0, 0xFFFFFF);
- $size_img = getimagesize($filename);
- $src_ratio=$size_img[0]/$size_img[1];
- if ($src_ratio>$ratio) {
- $old_w=$size_img[0];
- $size_img[0]=floor($size_img[1]*$ratio);
- $old_w=floor($old_w*$w/$size_img[0]);
- }
- else {
- $old_h=$size_img[1];
- $size_img[1]=floor($size_img[0]/$ratio);
- $old_h=floor($old_h*$h/$size_img[1]);
- }
- switch ($size_img['mime']) {
- case 'image/jpeg':
- $src_img = imagecreatefromjpeg($filename);
- break;
- case 'image/gif':
- $src_img = imagecreatefromgif($filename);
- break;
- case 'image/png':
- $src_img = imagecreatefrompng($filename);
- break;
- }
- imagecopyresampled($dest_img, $src_img, 0, 0, 0, 0, $w, $h, $size_img[0], $size_img[1]);
- // тут определим новое имя файла (и/или путь) для сохранения
- $file_info=pathinfo($filename);
- $filename_new = str_replace('.'.$file_info['extension'], '_mini.'.$file_info['extension'], $filename);
- switch ($size_img['mime']) {
- case 'image/jpeg':
- imagejpeg($dest_img,$filename_new);
- break;
- case 'image/gif':
- imagegif($dest_img,$filename_new);
- break;
- case 'image/png':
- imagepng($dest_img,$filename_new);
- break;
- }
- imagedestroy($dest_img);
- imagedestroy($src_img);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement