Я загружаю картинку на сервер,
//путь загрузки картинки
$uploaddir = 'img/';
$uploadfile = $uploaddir.basename($_FILES['myfile']['name']);
//для миниатюр
$uploaddir_m = 'img/m_';
$uploadfile_m = $uploaddir_m.basename($_FILES['myfile']['name']);
//загружаем картинку
if (move_uploaded_file($_FILES['myfile']['tmp_name'], $uploadfile)) {
$src=$uploadfile;
$dest=$uploadfile_m;
$width=150;
$height=150;
$quality=100;
if(!file_exists($src)) return 1; // исходный файл не найден
$size=getimagesize($src);
if($size===false) return 2; // не удалось получить параметры файла
// Определяем исходный формат по MIME-информации и выбираем соответствующую imagecreatefrom-функцию.
$format=strtolower(substr($size['mime'], strpos($size['mime'], '/')+1));
$icfunc="imagecreatefrom".$format;
if(!function_exists($icfunc)) return 3; // не существует подходящей функции преобразования
// Определяем необходимость преобразования размера так чтоб вписывалась высота
if( $width<$size[0] || $height<$size[1] )
{
$ratio=$height/$size[1];
}
else
{
$ratio=1;
}
$src1 = imagecreatefrompng("img/znak.png");
$size2=getimagesize("img/znak.png");
$isrc=$icfunc($src);
$idest=imagecreatetruecolor($size[0]*$ratio,$size[1]*$ratio);
//собственно создаем картинку миниатюру
imagecopyresampled($idest, $isrc, 0, 0, $dx, $dy, $size[0]*$ratio, $size[1]*$ratio, $size[0], $size[1]);
$ratio2=($size[0]/$size2[0]);
//создаем водные знаки
imagecopyresampled($isrc,$src1, 10, ($size[1]/2)-50, $dx, $dy,$size[0]-20,$size2[1]*$ratio2,($size[0]/$ratio2),$size2[1]);
imagejpeg($idest,$dest,100);
imagejpeg($isrc,$src,70);
chmod($dest,0666);
}