1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
| <?php
// php image resize static class
class Rimage {
protected function __construct() { }
static $max_size = 110; # максимально допустимый размер (по ширине/высоте) уменьшенной картинки
static function resize($path1,$path2) {
$params = getimagesize($path1);
# в зависимости от типа оригинальной картинки применяем соответствующую функцию для считывания и создания изображения с которым будем работать
switch ( $params[2] ) {
case 1: $source = imagecreatefromgif($path1); break;
case 2: $source = imagecreatefromjpeg($path1); break;
case 3: $source = imagecreatefrompng($path1); break;
}
# если ширина или высота оригинальной картинки больше ограничения производим вычисления
if ( $params[0]>self::$max_size || $params[1]>self::$max_size ) {
# выбираем большее: ширины или высота оригинальной картинки
if ( $params[0]>$params[1] ) $size = $params[0]; # ширина
else $size = $params[1]; # высота
# используя нехитрую пропорцию вычислям ширину и высоту уменьшенной картинки
$resource_width = floor($params[0] * self::$max_size / $size);
$resource_height = floor($params[1] * self::$max_size / $size);
# создание "подкладки"
$resource = imagecreatetruecolor($resource_width, $resource_height);
# изменение размера и копирование полученного на "подкладку"
imagecopyresampled($resource, $source, 0, 0, 0, 0, $resource_width, $resource_height, $params[0], $params[1]);
}
# если изменять размер не надо просто присваиваем переменной $resource идентификатор оригинальной картинки
else $resource = $source;
imagejpeg($resource,$path2);
unset($resource);
unset($source);
}
static function resolution($path) { // строка разрешения изображения
$size=getimagesize($path);
return $size[0].'x'.$size[1];
}
static function png2jpg($originalFile, $outputFile, $quality = 80) {
$size=getimagesize($originalFile);
$image = imagecreatetruecolor($size[0],$size[1]);
$c=imagecolorallocate($image,255,255,255); // white
imagefilledrectangle($image,0,0,$size[0],$size[1],$c);
$image1 = imagecreatefrompng($originalFile);
imagecopyresampled($image,$image1, 0, 0, 0, 0,$size[0], $size[1],$size[0],$size[1]);
imagejpeg($image, $outputFile, $quality);
imagedestroy($image1);
imagedestroy($image);
}
} // end class |