benim tavsiyem:
1- yuklenen orjinal resmi ayri bir dizinde sakla.
2- orjinal resim ile filigran.png 2resmi php ile üst üste getir. boylece basit bir yazi degil logo bile çakabilirsin.
3- oluşan yeni resmi kaydet.

filigran.png transparan , şeffaflığı %15 olan bir resim olsun ki aşırı rahatsiz etmesin.

bu benim yazdiğim ve kullandigim fonksiyonum :
function resim_yukle($kaynak,$hedef,$h,$w,$kalite=90,$filigran=0,$temsili=0,$getimagesize=0) {
    @chmod($kaynak,0775);
    if ($getimagesize==0) {
        $image_info = getimagesize($kaynak);
    }
    else {
        $image_info = $getimagesize;
    }

    if($image_info['mime'] == 'image/jpg' || $image_info['mime']=='image/jpeg'|| $image_info['mime']=='image/pjpeg') {
        $srcimg=imagecreatefromjpeg($kaynak);
    }
    elseif($image_info['mime'] == 'image/png'|| $image_info['mime'] == 'image/x-png') {
        $srcimg=imagecreatefrompng($kaynak);
    }
    elseif($image_info['mime'] == 'image/gif') {
        $srcimg=imagecreatefromgif($kaynak);
    }

    # orjinal wd ,hi
    $o_wd = imagesx($srcimg) ;
    $o_ht = imagesy($srcimg) ;

    # hedef resim
    $t_im = imagecreatetruecolor($w,$h);

    $white = imagecolorallocate($t_im, 255, 255, 255);
    imagefilledrectangle($t_im, 0, 0, $w, $h, $white);

    if($o_wd>$o_ht) {
        # resim yatik
        $new_width = $w;
        $new_height = ($o_ht*$new_width)/$o_wd;
    }
    elseif($o_wd<$o_ht || $o_wd==$o_ht) {
        # resim dik
        $new_height = $h;
        $new_width = ($o_wd*$new_height)/$o_ht;
    }

    # eger orjinal resim hedef boyuttan kucuk ise buyutunce bozuluyor, buyutme!
    if( ($o_wd<$w && $o_ht<$h)) {
        imagecopyresampled($t_im, $srcimg, ($w-$o_wd)/2, ($h-$o_ht)/2, 0, 0,$o_wd,$o_ht, $o_wd, $o_ht);
    }
    else {
        imagecopyresampled($t_im, $srcimg, ($w-$new_width)/2, ($h-$new_height)/2, 0, 0,$new_width,$new_height, $o_wd, $o_ht);
    }

    # üzerine filigran yazılacak mı?
    if($filigran==1) {
        $logo_file="/images/filigran.png";
        $img_logo = imagecreatefrompng($logo_file);
        $sx = imagesx($img_logo);
        $sy = imagesy($img_logo);
        imagecopy($t_im, $img_logo, round(($w-$sx)/2), round(($h-$sy)/2), 0, 0, $sx, $sy);
    }

    # üzerine "Temsili Fotoğraf" yazılacak mı?
    if($temsili==1) {
        # yada baska bir yazi olabilir
        $yazi=" Temsili Fotoğraf ";
        //$font=2;
        $font_file="/monofont.ttf";
        $yer_x=110;
        $yer_y=15;

        $bg = imagecolorallocate($t_im, 255, 255, 255);
        $textcolor = imagecolorallocate($t_im, 0, 0, 0);
        ImageFilledRectangle($t_im, $w-$yer_x, $h-$yer_y-10, ($w-$yer_x)+88, ($h-$yer_y)+1, $bg);
        imagettftext($t_im, 9, 0, $w-$yer_x, $h-$yer_y, $textcolor, $font_file, $yazi);
        //imagestring($t_im, $font, $w-$yer_x, $h-$yer_y, $yazi, $textcolor);
    }

    if($image_info['mime'] == 'image/jpg' || $image_info['mime']=='image/jpeg'|| $image_info['mime']=='image/pjpeg') {
        imagejpeg($t_im,$hedef,$kalite);
    }
    elseif($image_info['mime'] == 'image/png'|| $image_info['mime'] == 'image/x-png') {
        imagepng($t_im,$hedef);
    }
    elseif($image_info['mime'] == 'image/gif') {
        imagegif($t_im,$hedef);
    }
    imagedestroy($t_im);
}
Kullanım şekli:
resmi 90 kalitede , filigranli , 800x600 yap
        $dizin = "/resimler/";
        $yeniresim=$_FILES['resim_link'];
        $ozelisim = rand(0,9)."_".time();
        $ext = substr($yeniresim['name'],strrpos($yeniresim['name'], "."));

        $userfile_name = strtolower($ozelisim.$ext);
        $userfile_tmp = $yeniresim['tmp_name'];
        $userfile_size = $yeniresim['size'];
        $userfile_type = $yeniresim['type'];

resim_yukle($userfile_tmp,$dizin.$userfile_name,600,800,90,1,$getimagesize);
100x100 thumbnail olarak başka dizine kopyala:
resim_yukle($userfile_tmp,$dizin."tn/".$userfile_name,100,100,90,0,$getimagesize);