Спустя 1 час, 47 минут, 8 секунд (15.12.2009 - 11:41) sergeiss написал(а):
http://phpforum.ru/index.php?showforum=133 - читай тут
Спустя 3 часа, 28 минут, 38 секунд (15.12.2009 - 15:09) pultter написал(а):
вот... осталось только добавить upload и сохранение полученного изображения в файл
<?php Error_Reporting(E_ALL & ~E_NOTICE);
/*
f - имя файла
t - способ масштабирования
q - качество сжатия
s - исходное изображение
d - результирующее изображение
w - ширниа изображения
*/
// имя файла
$f = "1.jpg";
// тип преобразования
$t = 2;
// конечное изображение
$d = "<img src=\"02.jpg\">";
// определяем тип, переданный ранее и задаем переменной $w значение
if ($t == 0) {
$w = 70;
}
if ($t == 1) {
$w = 90;
}
if ($t == 2) {
$w = 240;
}
// качество jpeg по умолчанию
if (!isset($q)) {
$q = 100;
}
// создаём исходное изображение
$s = imagecreatefromjpeg($f);
// определяем координаты картинки
$ws = imagesx($s);
$hs = imagesy($s);
// не знаю что это, но без него не работает
header("Content-type: image/jpeg");
// операции для получения квадратного файла
if (($t==0)||($t==1)) {
// создаём пустую квадратную картинку
$d = imagecreatetruecolor($w,$w);
// вырезаем квадратную серединку по x, если фото горизонтальное
if ($ws>$hs) {
imagecopyresized($d, $s, 0, 0,
round((max($ws,$hs)-min($ws,$hs))/2),
0, $w, $w, min($ws,$hs), min($ws,$hs));
}
// вырезаем квадратную верхушку по y
if ($ws<$hs) {
imagecopyresized($d, $s, 0, 0, 0, 0, $w, $w,
min($ws,$hs), min($ws,$hs));
}
// квадратная картинка масштабируется без вырезок
if ($ws==$hs) {
imagecopyresized($d, $s, 0, 0, 0, 0, $w, $w, $ws, $ws);
}
}
// операции для получения прямоугольного файла
if ($t==2) {
// вычисление пропорций
$r = $ws/$w;
$wd = round($ws/$r);
$hd = round($hs/$r);
// создаём пустую картинку
$d = imagecreatetruecolor($wd,$hd);
// копируем и масштабируем
imagecopyresized($d, $s, 0, 0, 0, 0, $wd, $hd, $ws, $hs);
}
// вывод картинки
imagejpeg($d,'',$q);
// удаляем все
imagedestroy($d);
imagedestroy($s);
?>
_____________