Помогите сформулировать скрипт PHP

Oshparennij
На сайте с 14.01.2008
Offline
174
599

Всем доброго времени суток.

Заранее простите, php только начал читать. Возможно тема уже изъезжена...

Помогите пожалуйста, на личном примере...

Есть сайт, статический... Около 1000 страниц... Сайт в виде каталога... Суть проблемы в том, что на сайте соответственно уйма картинок в форматe .jpeg ipg, .png и т.д. В каждой статье около 3х картинок, которые лежат в /dating_pichers/ и /datings_pichers/

Как модернизировать ниже приведенный скрипт так, чтобы на странице где находится статья, из картинки, скажем 600Х800 (исходные изображения разных форматов и разной ширины и высоты) делалась картинка 280Х200 (Не теряя качества)

А на странице каталога (из которого пользователь попадает на статью) из исходного изображения получалось 110Х110... И чтобы картинка сжималась пропорционально...

Вот спарсил хорошую функцию для создания превьюшек.. Не знаю как применить...

function resizeimg($big, $small, $width, $height,$putch) {



// $putch - путь до загруженного изображения
// $big - название большого изображения
// $small - будущее название маленького изображение, которое будет находится в той же папке где и большое,
// или можно изменить путь вот тут вручную $small = "/min_img/".$small;
// $width, $height ширина и высота превьюшки ( размеры делаются пропорционально не меняя качества)



// имя файла с маштабируемым изображением
$big = $putch.$big;

// имя файла с уменьшенной копией
$small = $putch.$small;

//определиям коэфицент сжатия генерируемого изображения
$ratio = $width/$height;

// получаем размеры исходного изображения
$size_img = getimagesize($big);
list($width_src, $height_src) = getimagesize($big);

// если размеры меньше, то маштабирование не нужно
if(($width_src<$width) && ($height_src<$height)) {
copy($big, $small);
return true;
}

// получаем коэфицент сжатия исходного изображения
$src_ratio = $width_src/$height_src;

// вычисляем размеры уменьшенной копии, чтобы при мащтабировании сохранились пропорции исходного изображения
if ($ratio<$src_ratio) {
$height = $width/$src_ratio;
}
else {
$width = $height*$src_ratio;
}
// создаем пустое изображение п заданным размерам
$dest_img = imagecreatetruecolor($width,$height);
$white = imagecolorallocate($dest_img, 255, 255, 255);
if ($size_img[2] == 2) $src_img = imagecreatefromjpeg($big);
else if ($size_img[2] == 1) $src_img = imagecreatefromgif($big);
else if ($size_img[2] == 3) $src_img = imagecreatefrompng($big);

// маштабируем изображение функцией imagecopysapled()
// $dest_img - уменьшенная копия
// $src_img - исходное изображение
// $width - ширина уменьшенной копии
// $height - высота уменьшенной копии
// $size_img[0] - ширина исходного изображения
// $srze_img[1] - высота исходного изображения

imagecopyresampled($dest_img,
$src_img,
0,
0,
0,
0,
$width,
$height,
$width_src,
$height_src);

// сохраняем уменьшенную копию в файл
if ($size_img[2]==2) imagejpeg($dest_img,$small);
else if ($size_img[2]==1) imagegif($dest_img,$small);
else if ($size_img[2]==3) imagepng($dest_img,$small);
// очищаем память от созданных изображений
imagedestroy($dest_img);
imagedestroy($src_img);
return true;
}

P.S. Не пинайте чайника :)

Продам базу email (usa), валид 99%. Пишите в личку.
PavelWershinin
На сайте с 23.10.2010
Offline
9
#1

http://recens.ru/php/resize_and_crop.html вот посмотрите тут, неплохой скрипт с подробным описанием как использовать

XR.CMS - система управления сайтами (https://xr-cms.ru)
D0
На сайте с 15.12.2009
Offline
59
#2

Если на серваке стоит конвертер, то вполне можно вот так конвертировать:


# конвертер картинок в 700 пикселей по ширине
$yy = "/cache/".base64_encode($img).".jpg";
if (!file_exists(".".$yy)) {
$ex00 = 'convert -strip -filter Lanczos -resize 700 ."'.$img.'" ."'.$yy.'"';
exec($ex00);
}
$img = $yy;

И соответственно изменив ширину можно делать превьюшки. Только не забудьте создать директорию cache в корне сайта и дать ей права на запись cmod 777

у меня без проблем конвертирует.

Жизнью правит случай, а не мудрость.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий