Умный ресайз изображений

Мной это было реализовано так и никак иначе. Потому, считаю своим долгом облегчить участь страждущих.

Изменение размера изображения.
<?php

if ($_GET['action'] == "add") 
{ 
//объявим имя для нового файла. 
$time=time(); 
$mtime=microtime(); 
$mtime=str_replace(" ",'',$mtime); 
$filename=$_SERVER['DOCUMENT_ROOT']."/temp/$time.$mtime.tmp"; 
//теперь переместим его из темпа в тот файл который мы только что объявили 
move_uploaded_file($_FILES[picture][tmp_name],$filename) or die('Невозможно скопировать файл');; 
//Теперь определим тип файла, который мы залили 
if(eregi(".jpg$|.jpeg$",$_FILES[picture][name])) 
{ 
$cop = imagecreatefromJpeg($filename); 
} 
elseif(eregi(".png$",$_FILES[picture][name])) 
{ 
$cop = imagecreatefrompng($filename); 
} 
elseif(eregi(".gif$",$_FILES[picture][name])) 
{ 
$cop = imagecreatefromgif($filename); 
} 
else 
{ 
//если зелито что то не то, то он пошлёт нафиг и удалит залитое 
die("Неправильный формат картинки"); 
@chmod($filaneme,0777); 
@unlink($filename); 
} 
//определим размер картинки 
$size = getimagesize($filename);

//Укажем новые размеры картинки, не более которых она должна быть 
//Если угодно, то их можно передать из формы или _getом 
//как раз на этот случай закомментировано 2 строчки 
//$max_width=$w; 
//$max_height=$h;

$max_width='640'; 
$max_height='480';

//посчитаем новые размеры картинки 
$width=$size[0]; 
$height=$size[1];

$x_ratio = $max_width / $width; 
$y_ratio = $max_height / $height; 
if ( ($width <= $max_width) && ($height <= $max_height) ) 
{ 
$tn_width = $width; 
$tn_height = $height; 
} 
else if (($x_ratio * $height) < $max_height) 
{ 
$tn_height = $x_ratio * $height; 
$tn_width = $max_width; 
} 
else 
{ 
$tn_width = $y_ratio * $width; 
$tn_height = $max_height; 
} 
//теперь преобразуем его в новое изображение

$time=time(); 
$mtime=microtime(); 
$mtime=str_replace(" ",'',$mtime); 
$filename2="$time.$mtime.jpg"; 
$trumb = imagecreatetruecolor($tn_width, $tn_height); 
$image=imagecopyresized($trumb, $cop, 0, 0, 0, 0, $tn_width, $tn_height, $width,$height); 
//хочу обратить внимение, что последним параметром (35) мы уменьшаем 
//качество изображения. 
//чтобы этого не делать поставьте "-1" 
ImageJpeg($trumb,$_SERVER['DOCUMENT_ROOT']."/big/$filename2",35); 
ImageDestroy($trumb); 
//Если нам угодно, то мы можем повторить предыдущий процесс 
//чтобы сгенерировать кроме просто ресайзиного изображения 
//ещё и тумбочку, но тут и ежу понятно. И только после этого мы 
//освобождаем память 
ImageDestroy($cop); 
//и удаляем временный файл 
@chmod($filaneme,0777); 
@unlink($filename); 
print "Всё успешно залито."; 
} else { 
//создаём формочку 
print '<form enctype="multipart/form-data" action="index.php?action=add" method="POST">'; 
//а это на случай, если мы передаём новый MAX размер из формы 
//print "<input type=text name=w value=640>"; 
//print "<input type=text name=h value=480>"; 
print "<br><input type=file name=picture class=textbox><br><input type=submit class=button></form>"; 
} 
?>

Вот и всё. Всё предельно просто и легко.
Мне это было необходимо для скрипта сайта знакомств, разбирался около 6 часов. Но если бы такая статья была здесь раньше - то всё было бы намного проще.
Теги:
ресайз
Добавлено: 11 Мая 2018 14:40:49 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...