|
|
|
|
function resizeimg($filename, $w, $h)
{
// определим коэффициент сжатия изображения, которое будем генерить
$ratio = $w/$h;
// создадим пустое изображение по заданным размерам
$dest_img = imagecreatetruecolor($w, $h);
// зальём его белым цветом
imagefill($dest_img, 0, 0, 0xFFFFFF);
// получим размеры исходного изображения
$size_img = getimagesize($filename);
// получим коэффициент сжатия исходного изображения
$src_ratio=$size_img[0]/$size_img[1];
// здесь вычисляем размеры, чтобы при масштабировании сохранились
// 1. Пропорции исходного изображения
// 2. Исходное изображение полностью помещалось на маленькой копии
// (не обрезалось)
if ($src_ratio>$ratio)
{
$old_h=$size_img[1];
$size_img[1]=floor($size_img[0]/$ratio);
$old_h=floor($old_h*$h/$size_img[1]);
}
else
{
$old_w=$size_img[0];
$size_img[0]=floor($size_img[1]*$ratio);
$old_w=floor($old_w*$w/$size_img[0]);
}
// исходя из того какой тип имеет изображение
// выбираем функцию создания
switch ($size_img['mime'])
{
// если тип файла JPEG
case 'image/jpeg':
// создаем jpeg из файла
$src_img = imagecreatefromjpeg($filename);
$ext="jpg";
break;
// если тип файла GIF
case 'image/gif':
// создаем gif из файла
$src_img = imagecreatefromgif($filename);
$ext="gif";
break;
}
// масштабируем изображение функцией imagecopyresampled()
// $dest_img - уменьшенная копия
// $src_img - исходной изображение
// $w - ширина уменьшенной копии
// $h - высота уменьшенной копии
// $size_img[0] - ширина исходного изображения
// $size_img[1] - высота исходного изображения
imagecopyresampled($dest_img, $src_img, 0, 0, 0, 0, $w, $h, $size_img[0], $size_img[1]);
// в зависимости от типа файла выбирвем функцию сохранения в файл
switch ($size_img['mime'])
{
case 'image/jpeg':
// сохраняем в файл small.jpg
imagejpeg($dest_img, "small.$ext");
break;
case 'image/gif':
// сохраняем в файл small.gif
imagegif($dest_img, "small.$ext");
break;
}
// чистим память от созданных изображений
imagedestroy($dest_img);
imagedestroy($src_img);
}
|
Как к изображению создаваемому данной функцией, прикрутить копирайт "(c) xz " | |
|
|
|
|
|
|
|
для: Alexx
(20.11.2005 в 22:07)
| | Копирайт у Вас будет текстом или другим изображением?
Если текстом, то посмотрите решение по ссылке.
http://softtime.ru/forum/read.php?id_forum=1&id_theme=787&page=1
Если изображением, то просто наложите одно изображение на другое, например, с помощью функции imagecopymerge().
http://www.softtime.ru/dic/id_dic=357&id_group=15 | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(20.11.2005 в 23:55)
| | glsv (Дизайнер), я хочу ставить копирайт при помощи изображения. Можно пример привести imagecopymerge(). Есть картинка 500*600 как прикрепить копирайт размером 200*20 в нижний правый угол с 10 px отступом от краёв.
Заранее спасибо | |
|
|
|
|
|
|
|
для: Alexx
(21.11.2005 в 20:30)
| | Вот пример. Это скрипт image.php, который мы вызываем следующим образом:
<img src="image.php?img=picture.jpg">
|
В параметре img передаем имя изображения, на которое нужно наложить логотип.
image.php
<?
// Если ничего не передано, то выход
if($_GET["img"]=="") exit();
// Если файла с переданным именем не существует, то выход
if (!file_exists($_GET["img"])) exit();
// Логотип, который будем накладывать
$logofile = "logo.gif";
$size_logo = getimagesize($logofile);
$logo = imagecreatefromgif($logofile);
// Изображение, на которое нужно наложить логотип
$size_img = getimagesize($_GET["img"]);
if ($size_img[2]==2) $img = imagecreatefromjpeg($_GET["img"]);
else if ($size_img[2]==1) $img = imagecreatefromgif($_GET["img"]);
else if ($size_img[2]==3) $img = imagecreatefrompng($_GET["img"]);
// Собственно операция наложения логотипа
imagecopymerge($img, $logo,
$size_img[0]-$size_logo[0]-5,
$size_img[1]-$size_logo[1]-30,
0, 0,
$size_logo[0], $size_logo[1],
70);
// Вывод изображения
header("Content-type: image/png");
imagepng($img);
?>
|
| |
|
|
|