Проблема такая - необходимо изменять размеры загружаемых изображений. Особых проблем нет, использую следующую функцию:
CODE (text):
скопировать код в буфер обмена
скопировать код в буфер обмена
- function img_resize($src, $dest, $width, $height, $rgb=0xFFFFFF, $proportion=false, $quality=100) {
- if(!file_exists($src)) return false;
- $size = getimagesize($src);
- if($size === false) return false;
- if($proportion === true) {
- $h0 = $height;
- $height = ($width/$size[0])*$size[1];
- if($height > $h0) { $height = $h0; $width = ($height/$size[1])*$size[0]; }}
- if(!$zoom){
- if($width > $size[0]) $width = $size[0];
- if($height > $size[1]) $height = $size[1];
- }
- $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 = min($x_ratio, $y_ratio);
- $use_x_ratio = ($x_ratio == $ratio);
- if($use_x_ratio) { $new_width = $width; $new_left = 0; }
- else { $new_width = floor($size[0] * $ratio); $new_left = floor(($width - $new_width) / 2); }
- if(!$use_x_ratio) { $new_height = $height; $new_top = 0; }
- else { $new_height = floor($size[1] * $ratio); $new_top = floor(($height - $new_height) / 2); }
- $isrc = $icfunc($src);
- $idest = imagecreatetruecolor($width, $height);
- if(is_array($dest)) {
- $nd = explode('.', $src);
- $ndc = count($nd);
- $nd[$ndc - 2] .= $dest[0]; $dest = implode('.', $nd); }
- imagefill($idest, 0, 0, $rgb);
- imagecopyresampled($idest, $isrc, $new_left, $new_top, 0, 0, $new_width, $new_height, $size[0], $size[1]);
- imagejpeg($idest, $dest, $quality);
- imagedestroy($isrc);
- imagedestroy($idest);
- return $dest;
- }