Масштабирование картинок при загрузке

Разработка своих веб-приложений и страничек

Масштабирование картинок при загрузке

Сообщение Lundil » 27 июл 2008, 13:13

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

да чуть не забыл, чтоб в скрипте можно было устанавливать степень сжатия (если это jpeg)
и делать индексированным если это gif или png

----
Надоело редакторами пользоваться для этого...(((
Аватара пользователя
Lundil
Активный участник
 
Сообщения: 330
Зарегистрирован: 31 окт 2007, 10:41
Откуда: Саратов
Домен: http://mcsar.ru

Re: Масштабирование картинок при загрузке

Сообщение Lundil » 27 июл 2008, 15:21

ну и как обычно спрошу не подумав, потом уже сделал..)))
кароче код такой можно как freeware (или за пиво)

Код: Выделить всёРазвернуть
function image_resize_my($filename){
$xxx=getimagesize( $filename );
if($xxx === false){
die('А это нихера не картинка...');
};

if(!(($xxx[2]==IMAGETYPE_GIF)||($xxx[2]==IMAGETYPE_JPEG)||($xxx[2]==IMAGETYPE_PNG))){
die('Не верный тип изображения! Разрешены только jpg, gif, png форматы');
};

$typef=$xxx[2];
$w_src=$xxx[0];
$h_src=$xxx[1];
$w=230;
$q=70;//какчество жпега
$ratio =1;
$w_dest = $w;
$h_dest = $w;

if(($w_src<=230)and($h_src<=230)){
return $filename;
};

if(($w_src>800)||($h_src>600)){// а то памти жрет ноговато, если бальшую картинку сунуть...
  die('Файл больше допустимого значения 230х230!<br>его размеры '.$w_src.'x'.$h_src.'<br>уменьшите размер хотбы до 640х480, тогда он автоматом смасштабируется при вставке');};


if ($w_src > $h_src) // Если изображение горизонтальное
     {
      $ratio = $w_src/$w; // Считаем соотношение пропорций
      $w_dest = $w; // Конечная ширина будет равна максимальной
      $h_dest = round($h_src/$ratio); // Считаем конечную высоту
     }
   elseif ($h_src > $w_src) // Если изображение вертикальное
     {
      $ratio = $h_src/$w; // Считаем соотношение пропорций
      $h_dest = $w; // Конечная высота будет равна максимальной
      $w_dest = round($w_src/$ratio); // Считаем конечную ширину
     }
   else // Если изображение квадратное
     {
      $w_dest = $w; // Подставляем максимальные значения
      $h_dest = $w;
     };

if($typef==IMAGETYPE_GIF){
$src = imagecreatefromgif($filename);
}elseif($typef==IMAGETYPE_JPEG){
$src = imagecreatefromjpeg($filename);
}elseif($typef==IMAGETYPE_PNG){
$src = imagecreatefrompng($filename);
}else{
die('Изображение не верного типа!');
};
$dest = imagecreatetruecolor($w_dest,$h_dest);
imagecopyresampled($dest, $src, 0, 0, 0, 0, $w_dest, $h_dest, $w_src, $h_src);
   // Преобразуем исходное изображение в конечное (с новыми размерами).
   // Функция использует ресемплинг, поэтому изображение будет лучшего
   // качества, чем если использовать вместо imagecopyresampled функцию
   // imagecopyresized

imagedestroy($src); //освобождаем памть
$rc=true;
if($typef==IMAGETYPE_GIF){
$rc = imagegif($dest,$filename);
}elseif($typef==IMAGETYPE_JPEG){
$rc = imagejpeg($dest,$filename,$q);
}elseif($typef==IMAGETYPE_PNG){
$rc = imagepng($dest,$filename,9);
}else{
die('Изображение не верного типа!');
};
if(!$rc){
die('Ошибка масштабирования изображения и его сохранения');
};
imagedestroy($dest);//освобождаем памть

return $filename;
};


проверку на ошибки некоторые{
пропустил, ну ладно сами вставите.
}else{
тогда точно за пиво!
};
Аватара пользователя
Lundil
Активный участник
 
Сообщения: 330
Зарегистрирован: 31 окт 2007, 10:41
Откуда: Саратов
Домен: http://mcsar.ru

Re: Масштабирование картинок при загрузке

Сообщение zk » 27 июл 2008, 17:36

Всё по работе с изображениями на PHP - http://php.hsdn.org/manual/ru/book.image.php
zk
Администратор
 
Сообщения: 1971
Зарегистрирован: 02 сен 2007, 16:04
Домен: vfose.ru


Вернуться в PHP, HTML, CSS...

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron