Если вы знакомы с библиотекой GD PHP, понять эту статью совсем несложно!
<?php
/*************************************************** ***** *******************************
Описание параметра:
$max_file_size: ограничение размера загружаемого файла, единица измерения: БАЙТ.
$destination_folder: Путь к файлу загрузки
$watermark: добавлять ли водяной знак (1 означает добавление водяного знака, другие — отсутствие водяного знака).
Инструкции по использованию:
1. Удалить знак ; перед строкой «extension=php_gd2.dll» в файле PHP.INI, так как нам нужно использовать библиотеку GD;
2. Измените Extension_dir = на каталог, в котором находится ваш php_gd2.dll;
************************************************* * ******************************/
//Загрузка списка типов файлов
$uptypes=массив(
'изображение/jpg',
'изображение/JPEG',
'изображение/png',
'изображение/pjpeg',
'изображение/гиф',
'изображение/bmp',
'изображение/x-png'
);
$max_file_size=2000000 //Ограничение размера загружаемого файла, единица BYTE;
$destination_folder="uploadimg/"; //Путь к файлу
$watermark=1; //Добавить ли водяной знак (1 означает добавление водяного знака, другие — отсутствие водяного знака);
$watertype=1; //Тип водяного знака (1 — текст, 2 — изображение)
$waterposition=1; //Положение водяного знака (1 — левый нижний угол, 2 — правый нижний угол, 3 — левый верхний угол, 4 — правый верхний угол, 5 — центр);
$waterstring=" http://www.xplore.cn/ "; //строка водяного знака
$waterimg="xplore.gif"; //изображение водяного знака
$imgpreview=1; //Создавать ли изображение предварительного просмотра (1 означает, что создано, остальные не генерируются);
$imgpreviewsize=1/2 //Соотношение миниатюр
?>
<html>
<голова>
<title>Программа загрузки изображений ZwellL</title>
<style type="text/css">
<!--
тело
{
размер шрифта: 9pt;
}
вход
{
цвет фона: #66CCFF;
граница: вставка #CCCCCC толщиной 1 пиксель;
}
-->
</стиль>
</head>
<тело>
<form enctype="multipart/form-data" метод="post" name="upform">
Загрузить файлы:
<input name="upfile" type="file">
<input type="submit" value="Загрузить"><br>
Разрешенные для загрузки типы файлов: <?=implode(', ',$uptypes)?>
форма
> <?php
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if (!is_uploaded_file($_FILES["upfile"][tmp_name]))
//Существует ли файл?
{
echo "Картинка не существует!";
Выход;
}
$file = $_FILES["upfile"];
if($max_file_size < $file["размер"])
//проверяем размер файла
{
echo "Файл слишком велик!";
Выход;
}
if(!in_array($file["type"], $uptypes))
//проверяем тип файла
{
echo "Тип файла не соответствует!".$file["type"];
Выход;
}
if(!file_exists($destination_folder))
{
mkdir($destination_folder);
}
$filename=$file["tmp_name"];
$image_size = getimagesize($filename);
$pinfo=pathinfo($file["имя"]);
$ftype=$pinfo['расширение'];
$destination = $destination_folder.time().".".$ftype;
if (file_exists($destination) && $overwrite != true)
{
echo "Файл с таким именем уже существует";
Выход;
}
if(!move_uploaded_file ($filename, $destination))
{
echo «Ошибка перемещения файла»;
Выход;
}
$pinfo=pathinfo($destination);
$fname=$pinfo[базовое имя];
echo " <font color=red>Загружено успешно</font><br>Имя файла: <font color=blue>".$destination_folder.$fname."</font><br>";
echo "Ширина:".$image_size[0];
echo "длина:".$image_size[1];
echo "<br> size:".$file["size"]." bytes";
if($watermark==1)
{
$iinfo=getimagesize($destination,$iinfo);
$nimage=imagecreatetruecolor($image_size[0],$image_size[1]);
$white=imagecolorallocate($nimage,255,255,255);
$black=imagecolorallocate($nimage,0,0,0);
$red=imagecolorallocate($nimage,255,0,0);
imagefill($nimage,0,0,$white);
переключатель ($iinfo[2])
{
случай 1:
$simage =imagecreatefromgif($destination);
перерыв;
случай 2:
$simage =imagecreatefromjpeg($destination);
перерыв;
случай 3:
$simage =imagecreatefrompng($destination);
перерыв;
случай 6:
$simage =imagecreatefromwbmp($destination);
перерыв;
по умолчанию:
die("Неподдерживаемый тип файла";
Выход;
}
imagecopy($nimage,$simage,0,0,0,0,$image_size[0],$image_size[1]);
imagefilledrectangle($nimage,1,$image_size[1]-15,80,$image_size[1],$white
switch($watertype)
;
{
случай 1: //Добавляем строку водяного знака
imagestring($nimage,2,3,$image_size[1]-15,$waterstring,$black);
перерыв;
случай 2: //Добавляем изображение водяного знака
$simage1 =imagecreatefromgif("xplore.gif";
imagecopy($nimage,$simage1,0,0,0,0,85,15);
imagedestroy($simage1);
перерыв;
}
переключатель ($iinfo[2])
{
случай 1:
//imagegif($nimage, $destination);
imagejpeg($nimage, $destination);
перерыв;
случай 2:
imagejpeg($nimage, $destination);
перерыв;
случай 3:
imagepng($nimage, $destination);
перерыв;
случай 6:
imagewbmp($nimage, $destination);
//imagejpeg($nimage, $destination);
перерыв;
}
//Перезаписываем исходный загруженный файл
imagedestroy($nimage);
imagedestroy($simage);
}
if($imgpreview==1)
{
echo "<br>Предварительный просмотр изображения:<br>";
echo "<img src="".$destination."" width=".($image_size[0]*$imgpreviewsize)." height=".($image_size[1]*$imgpreviewsize);
echo " alt="Предварительный просмотр изображения:rИмя файла:".$destination."rВремя загрузки:">";
}
}
?>
</тело>
</html>
Напоследок считаю необходимым поговорить о принципе нанесения водяных знаков на изображения:
получение информации о загруженном файле, создание полноцветного изображения, назначение цветовой схемы и заливка изображения.
Создайте изображение, определив тип файла, затем скопируйте его в исходно созданное изображение, заполните и создайте прямоугольник, готовый к записи в imagestring() или исходную
программу обработки изображений для определения типа водяного знака: один — строка, другой — строка. другое — «Добавить графический объект сверху».