Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Помогите разобраться с функцией ресайза изображений / 5 сообщений из 5, страница 1 из 1
23.08.2012, 15:14:29
    #37928125
Pelsh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с функцией ресайза изображений
Имеем вот такую функцию

Код: php
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.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
			$valid_formats = array("jpg", "png", "gif", "bmp","JPG");
			$name1 = $_FILES[$id1]['name'];
			$size1 = $_FILES[$id1]['size'];
			$name2 = $_FILES[$id2]['name'];
			$size2 = $_FILES[$id2]['size'];
			$name3 = $_FILES[$id3]['name'];
			$size3 = $_FILES[$id3]['size'];
			
			
			if(strlen($name1))
				{
					list($txt, $ext) = explode(".", $name1);
					if(in_array($ext,$valid_formats))
					{
					if($size1<(2*1024*1024))
						{
							if($img_name1!="")
							{
							$actual_image_name = $img_name1;
							}
							else
							{
								$actual_image_name = time().substr(str_replace(" ", "_", $txt), 5)."1".".".$ext;
							}
							
							
							$tmp = $_FILES[$id1]['tmp_name'];
							if(move_uploaded_file($tmp, $path.$actual_image_name))
								{
								$realpath="$path$actual_image_name"; 
								$small = "$path_small$actual_image_name";
								$size_img =getimagesize("$realpath");
						
								 $width = $size_img[0];
								 $height = $size_img[1];
								 $w=1;
								 $h=1;
								  $kl = 1;
								 if($width>$height)
								 {
								 $k = $height;
								 }
								 else
								 $k = $width;
								 $s = $k/120;
								 $t = 150/$s;
								 
								 
								 
								 
								 if($width>120 || $height>120 )
								 {
								  resize($realpath,$small,$t,$t,true);
								  $width=$width*(1/$s);
								  $height = $height*(1/$s);
								  $kl = 0;
								 }
								if($width>120)
								{
									 $w=  $width-120;	
									 $kl = 0;
								}
								if($height>120)
								{
									 $h =  $height-120;	
									 $kl = 0;
									 							 
								}
								
								
								if($kl == 0)
									crop($small,$small,array($w/2,$h/2,-$w/2,-$h/2));
								else
									crop($realpath,$small,array($w/2,$h/2,-$w/2,-$h/2));
							
							
							$con->execute("Update product set img1 = '".$actual_image_name."' where ID = '".$val."'");
								//***insert into table ****////
									
									echo "<img src='upload_small/".$actual_image_name."'  class='preview'>";
								}
							else
								echo "failed";
						}
						else
						echo "Image file size max 1 MB";					
						}
						else
						echo "Invalid file format..";	
				}




На выходе получаем ресайзовые фотки 120х120. Как мне подправить функцию чтобы на выходе было 250х250
...
Рейтинг: 0 / 0
23.08.2012, 15:17:02
    #37928138
Pelsh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с функцией ресайза изображений
Я так понял, что цифры надо менять тут:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
								 if($width>$height)
								 {
								 $k = $height;
								 }
								 else
								 $k = $width;
								 $s = $k/120;
								 $t = 150/$s;


Однако мне не ясно что на что в этом месте делят и зачем??
Господа знатоки, помогите!
...
Рейтинг: 0 / 0
23.08.2012, 16:45:50
    #37928328
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с функцией ресайза изображений
Pelsh,

Код: php
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.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
/*
$dir - путь к картинке
$name - имя картинки
$width - ширина картинки (preview)
$height - высота картинки (preview)
$left - выравнивание (-1 : по левому краю, 0 : по центру, 1 : по правому краю)    вроде так :)
$top - выравнивание (-1 : по верхнему краю, 0 : по центру, 1 : по нижнему краю)    вроде так :)
$cut - соблюдать пропорции (true|false)
*/
function resize_image($dir, $name, $width, $height, $left=0, $top=0, $cut = true){
	if ($width==0) $width=120;
	if ($height==0) $height=120;
	$mime=getimagesize($dir.$name);
	if ($mime) {
		$mime=$mime["mime"];
		switch($mime){
			case "image/png":
				$src=@imagecreatefrompng($dir.$name);
				break;
			case "image/jpeg":
				$src=@imagecreatefromjpeg($dir.$name);
				break;
			case "image/wbmp":
				$src=@imagecreatefromwbmp($dir.$name);
				break;
			case "image/gif":
				$src=@imagecreatefromgif($dir.$name);
				break;
		}
	}
	$w=imagesx($src);
	$h=imagesy($src);
	if ($cut){
		if ($width/$height>$w/$h){
			$newwidth=$width;
			$newheight=round($newwidth/$w*$h);
			$top=round(($height-$newheight)/2*(1+$top));
			$left=0;
		}else{
			$newheight=$height;
			$newwidth=round($newheight/$h*$w);
			$left=round(($width-$newwidth)/2*(1+$left));
			$top=0;
		}
		$res=imagecreatetruecolor($width, $height);
	    if (($w==$newwidth) && ($h==$newheight)){
	    	imagecopy($res, $src, 0, 0, 0, 0, $w, $h);
	    }
	    else{
			imagecopyresampled($res, $src, $left, $top, 0, 0, $newwidth, $newheight, $w, $h);
		}
	}else{
		if ($width/$height<$w/$h){
			$newwidth=$width;
			$newheight=round($newwidth/$w*$h);
		}else{
			$newheight=$height;
			$newwidth=round($newheight/$h*$w);
		}
		$res=imagecreatetruecolor($newwidth, $newheight);
	    if (($w==$newwidth) && ($h==$newheight)){
	    	imagecopy($res, $src, 0, 0, 0, 0, $w, $h);
	    }
	    else{
			imagecopyresampled($res, $src, 0, 0, 0, 0, $newwidth, $newheight, $w, $h);
		}
	}
	//imagepng($src);
	//return $res;

	$mime=getimagesize($dir.$name);
	if ($mime) {
		$mime=$mime["mime"];
		switch($mime){
			case "image/png":
				imagepng($res, $dir."thumbs"."/".$name);
				break;
			case "image/jpeg":
				imagejpeg($res, $dir."thumbs"."/".$name);
				break;
			case "image/wbmp":
				imagewbmp($res, $dir."thumbs"."/".$name);
				break;
			case "image/gif":
				imagegif($res, $dir."thumbs"."/".$name);
				break;
		}
	}
	
}



писал давно... смахивает даже немного на говнокод (и ресурсов жрёт кучу), но зато вникать не надо. картинки сохраняются в подпапку thumbs (предварительно надо создать)
...
Рейтинг: 0 / 0
23.08.2012, 16:56:53
    #37928357
Pelsh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с функцией ресайза изображений
Я боюсь менять что-то в уже существующей админке, т.к. она тоже написана говнокодом - по этому прошу помощи как изменить уже существующий код! Помогите люди дорогие! Готом материально компенсировать ваше время! Очень нужно!
...
Рейтинг: 0 / 0
23.08.2012, 20:05:26
    #37928669
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с функцией ресайза изображений
Тупо 120 заменить на 250 не?
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Помогите разобраться с функцией ресайза изображений / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]