Сумрачный блог Кирилла Панфилова

Создание уменьшенной копии изображения

Например, вы программируете на PHP загрузку изображений в фотоальбом и хотите, чтобы на лету создавались уменьшенные копии загружаемых картинок, складывались в ту же папку, но имели отличительный признак.

function generatePreview($inFolder, $fromFile, 
		$makeWidth=150, $pref="_", 
		$quality="100") {
	if($fromFile!=false) {
		$src=imagecreatefromjpeg($inFolder.$fromFile);
		$props = getImageSize($inFolder.$fromFile);
		$propsw = $props[0];
		$propsh = $props[1];
		$propskoeff = $propsw/$makeWidth;
		$propshnew = round($propsh/$propskoeff);
		$dst=imagecreatetruecolor($makeWidth,$propshnew); 
		imagecopyresampled($dst, $src,
	0, 0, 0, 0, ImageSX($dst), ImageSY($dst), 
	ImageSX($src), ImageSY($src));
		imagejpeg($dst,$inFolder.$pref.$fromFile,$quality);
		}
	}

В качестве обязательных параметров следует передать директорию, в которой хранятся изображения, и имя исходного файла (предполагается, что он уже загружен). Далее необязательные параметры, в которых уже есть значения по умолчанию: ширина уменьшенного файла, префикс (военная хитрость: префикс может содержать в себе имя директории для уменьшенных копий, только не забудьте её создать) и качество (по умолчанию наилучшее).

Функция вызывается в нужном месте, допустим, так (при $uploaded — имени загруженного файла):

generatePreview('/images/', $uploaded, 120, 'small_');


Комментарии