2015-06-18 22 views
-1

我想上传图片,然后自动添加水印(文字或图片),但不在图片上,我希望它在图片之外,我该如何用PHP做到这一点?在如果图像太小,同时适应水印总是合身Watermark Outside PHP中的图像?

请参考下面的图片看到我的意思和所期望的结果

原始图像:http://i.stack.imgur.com/SSFEL.png

上传的图片: http://i.stack.imgur.com/GOIt4.png

相同的图像,但最后一个与它的水印。

+0

SO你尝试过什么? – Darren

回答

1

这还不是最自动化的确定文字位置(你可以做到这一点)的条件,但它是一个开始:

<?php 

    function create_cartoon($settings=false) 
     { 
      $img = (isset($settings['img']) && !empty($settings['img']))? $settings['img']:false; 
      $txt = (isset($settings['text']) && !empty($settings['text']))? $settings['text']:'www.lunarbaboon.com'; 
      $offset = (isset($settings['offset']) && !empty($settings['offset']))? $settings['offset']:12; 

      if($img == false) 
       return; 

      header('Content-Type: image/jpeg'); 

      $mime  = getimagesize($img); 
      $or_w  = $mime[0]; 
      $or_h  = $mime[1]; 
      $type  = $mime['mime']; 

      switch ($type) { 
       case ('image/png') : 
        $im = imagecreatefrompng($img); 
        break; 
       case ('image/gif') : 
        $im = imagecreatefromgif($img); 
        break; 
       default : 
        $im = imagecreatefromjpeg($img); 
      } 

      $layer1  = imagecreatetruecolor($or_w,($or_h+30)); 
      $bkg1  = imagecolorallocate($layer1,255,255,255); 
      $layer1s = getimagesize($layer1); 

      imagecopy($layer1,$im,0,0,$layer1s[0],$layer1s[1],$or_w,$or_h); 
      imagefilledrectangle($layer1,0,$or_h,$or_w,$or_h+30,$bkg1); 
      $text_color = imagecolorallocate($layer1, 100, 100, 100); 
      imagestring($layer1, 8, $offset, $or_h+5, $txt, $text_color); 
      imagejpeg($layer1); 
      imagedestroy($img); 
      imagedestroy($layer1); 
     } 

    // To use 
    create_cartoon(array('img'=>'http://i.stack.imgur.com/SSFEL.png','offset'=>114));  
?>