На главную Статьи Функции

Ресайз изображения методами PHP.




Начнем с логики. Первый шаг – загрузка самого изображения на сервер:

  <form  action="create_img.php" method="post"  enctype="multipart/form-data" name="form1"  id="form1">
<label>
<input type="file" name="file" id="file"/>
</label>
<p><input name="add" type="hidden" value="add" />
<label>
<input type="submit" name="button1" value="Добавить"/>
</label>
</p>
</form>
- вот простая форма, с полем для загрузки изображения, а дальше код самого обработчика:

 
  if  (!empty($_FILES['file']['tmp_name']))
{
$filename=$_FILES['file']['tmp_name'];
}
else
{
$file='none';
}
resizer($filename);

Можно заметить, что здесь добавлена проверка: а было ли введено имя файла в форму для загрузки. После этого файл находится под именем ‘filename’ во временной папке сервера.

Дальше – самое сложное, сама функция. Основные этапы работы просты до безобразия:

  1. Имя будущего изображения получаем автоматически с помощью функции microtime() и хэширования полученного числа методом md5.
  2. С помощью функции getimagesize() узнаем размеры исходного изображения и тип файла (jpeg,png,gif), и если они больше нужного идем дальше
  3. Создаем пустое изображение, размеры которого пропорциональны исходному.
  4. С помощью функции imagecopyresampled() копируем исходное изображение во вновь созданное пустое
  5. Сохраняем полученное изображение с помощью одной из функций: imagejpeg(),imagepng() или imagegif() и радуемся жизни

А вот и сама функция resizer() принимающая в качестве параметра имя файла

function resizer($filename)
{
//Получаем размер изображения
$size = getimagesize ($filename);
//print_r($size);
//echo('<br>'.$size['mime']);
$w=$size['0'];
$h=$size['1'];
//echo('<br>Высота = '.$h.'<br>Ширина = '.$w);
$type = $size['mime'];
//Определяем нужные размеры изображения
$max_w = 200;
$m_h = ($max_w*$h/$w);
$max_h = round($m_h, 0);

switch ($type)
{
//Формат jpg
case 'image/jpeg':

$mtime=microtime();
$mtime=str_replace('.','',$mtime);
$mtime=str_replace(' ','',$mtime);
$new_img=md5($mtime).'.jpg';
//echo($new_img);
//Создаем изображение из файла
$src_img = imagecreatefromjpeg($filename);
if (!$src_img)
{
echo('Невозможно создать изображение');
}
/*         else
{
echo('<br>Изображение создано');
}
*/        
//Создаем пустой файл
$empty_img = imagecreatetruecolor($max_w, $max_h);
//Копируем из файла в пустое изображение
$res_img = imagecopyresampled($empty_img, $src_img, 0, 0, 0, 0, $max_w, $max_h, $w, $h);
$new_img = imagejpeg($empty_img, 'image/'.$new_img, 100);

break;
//Формат png
case 'image/png':

$mtime=microtime();
$mtime=str_replace('.','',$mtime);
$mtime=str_replace(' ','',$mtime);
$new_img=md5($mtime).'.png';
//          echo($new_img);
//Создаем изображение из файла
$src_img = imagecreatefrompng($filename);
if (!$src_img)
{
echo('Невозможно создать изображение');
}
else
{
echo('<br>Изображение создано');
}
//Создаем пустой файл
$empty_img = imagecreatetruecolor($max_w, $max_h);
//Копируем из файла в пустое изображение
$res_img = imagecopyresampled($empty_img, $src_img, 0, 0, 0, 0, $max_w, $max_h, $w, $h);
$new_img = imagepng($empty_img, 'image/'.$new_img, 100);

break;
//Формат gif
case 'image/gif':

$mtime=microtime();
$mtime=str_replace('.','',$mtime);
$mtime=str_replace(' ','',$mtime);
$new_img=md5($mtime).'.gif';
//          echo($new_img);
//Создаем изображение из файла
$src_img = imagecreatefromgif($filename);
if (!$src_img)
{
echo('Невозможно создать изображение');
}
else
{
echo('<br>Изображение создано');
}
//Создаем пустой файл
$empty_img = imagecreatetruecolor($max_w, $max_h);
//Копируем из файла в пустое изображение
$res_img = imagecopyresampled($empty_img, $src_img, 0, 0, 0, 0, $max_w, $max_h, $w, $h);
$new_img = imagegif($empty_img, 'image/'.$new_img, 100);

break;
}
//-------------Конец функции resizer()--------------------
}

Ну вот как-то так...


© 2010-2024 При использовании материалов ссылка на сайт www.webchaynik.ru обязательна

обратная связь