What's the point in using 100% for the last parameter of imagecopymerge() ?
Quote PHP manual: "when 100 this function behaves identically to imagecopy()".

And I think you should use a random value for this(range 40-60%) to make it impossible for other scripts to substract the watermark pixel values.

But dispite this, good tutorial !