Загрузка фото, без потери пропорций.

Beckie

Новичок
Загрузка фото, без потери пропорций.

Уже какой час бьюсь над решением данной проблемы.

Уже как бы придумал, но чет не работает. Вот и решил спросить у умных людей. :rolleyes:

Самый простой вариант, это назначить фиксированную ширину и выставить определенное ограничение на высоту, но фотки бывают разные, у меня вот допустим на фотике 683х1024 , а 1024 уже будет на некоторых мониторах вылазить за экран.

В общем легче будет линкануть код:

PHP:
$im = imagecreatefromjpeg($fullpath);
$ox = imagesx($im); $oy = imagesy($im);

$test = $ox / $oy; if($test < 0.6) {exit();}

if($ox > 300 && $oy > 100) {
if($ox > 800) {$ox = 800;} $upload->thumbnail($fullpath,$thumb800,$ox);

}




	function thumbnail($fullpath,$thumbfolder,$size) {

		$im = imagecreatefromjpeg($fullpath);

		$ox = imagesx($im);
		$oy = imagesy($im);

		
		$nx = $size;
		$ny = floor($oy * ($nx / $ox));
		if($ny > 800) {exit();}


		$nm = imagecreatetruecolor($nx, $ny);

		imagecopyresized($nm, $im, 0,0,0,0,$nx,$ny,$ox,$oy);

		imagejpeg($nm, $thumbfolder);
	}

Вот этот фрагмент бы доработать.

PHP:
$nx = $size;
$ny = floor($oy * ($nx / $ox));
if($ny > 800) {exit();}
Я думал сделать цикл, который бы делил допустим на 10% $nx и $ny до тех пор, пока $ny не впишется допустим в 700px или 600px, но толи я неправильно цикл написал, толи еще что-то.

Заранее огромное спасибо!
Сильно не пинайте. :rolleyes:
 

tf

крылья рулят
ширина больше - уменьшаем ширину&высоту
высота больше - уменьшаем высоту
выбираем
 

Beckie

Новичок
После хорошего обеда, сразу стало всё ясно.
Без перерыва кодить плохо. :D

PHP:
if($ny > 600) {while($ny > 600) {$nx = ($nx / 1.01);$ny = ($ny / 1.01);}}
Сделал так.

Классный форум и люди тут отзывчивые. :)

-~{}~ 26.08.09 18:47:

Кстати надо ли делать imagedestroy($nm); ?

-~{}~ 26.08.09 18:48:

Наткнулся в мануале. Написано, что освобождает память.
 

Adelf

Administrator
Команда форума
>> Кстати надо ли делать imagedestroy($nm); ?

Если фоток несколько, то можно и сделать. А так, после конца работы скрипта PHP сам все удалит. Хотя.. лучше всегда делай :) хуже не будет.
 
Сверху