I have the exact function with image resize on my site, but I would like to add the watermark to the same function, I tried with many options, but nothing worked. Can someone help me to add watermark function please

code as follow

function do_resize_image($file, $width = 0, $height = 0, $proportional = false, $output = 'file')
{
    if($height <= 0 && $width <= 0)
    {
      return false;
    }

    $info = getimagesize($file);
    $image = '';

    $final_width = 0;
    $final_height = 0;
    list($width_old, $height_old) = $info;

    if($proportional) 
    {
      if ($width == 0) $factor = $height/$height_old;
      elseif ($height == 0) $factor = $width/$width_old;
      else $factor = min ( $width / $width_old, $height / $height_old);   

      $final_width = round ($width_old * $factor);
      $final_height = round ($height_old * $factor);

      if($final_width > $width_old && $final_height > $height_old)
      {
          $final_width = $width_old;
          $final_height = $height_old;

      }
    }
    else 
    {
      $final_width = ( $width <= 0 ) ? $width_old : $width;
      $final_height = ( $height <= 0 ) ? $height_old : $height;
    }

    switch($info[2]) 
    {
      case IMAGETYPE_GIF:
        $image = imagecreatefromgif($file);
      break;
      case IMAGETYPE_JPEG:
        $image = imagecreatefromjpeg($file);
      break;
      case IMAGETYPE_PNG:
        $image = imagecreatefrompng($file);
      break;
      default:
        return false;
    }

    $image_resized = imagecreatetruecolor( $final_width, $final_height );

    if(($info[2] == IMAGETYPE_GIF) || ($info[2] == IMAGETYPE_PNG))
    {
      $trnprt_indx = imagecolortransparent($image);

      if($trnprt_indx >= 0)
      {
        $trnprt_color    = imagecolorsforindex($image, $trnprt_indx);
        $trnprt_indx    = imagecolorallocate($image_resized, $trnprt_color['red'], $trnprt_color['green'], $trnprt_color['blue']);
        imagefill($image_resized, 0, 0, $trnprt_indx);
        imagecolortransparent($image_resized, $trnprt_indx);    
      } 
      elseif($info[2] == IMAGETYPE_PNG) 
      {
        imagealphablending($image_resized, false);
        $color = imagecolorallocatealpha($image_resized, 0, 0, 0, 127);
        imagefill($image_resized, 0, 0, $color);
        imagesavealpha($image_resized, true);
      }
    }
    imagecopyresampled($image_resized, $image, 0, 0, 0, 0, $final_width, $final_height, $width_old, $height_old);

    switch( strtolower($output))
    {
      case 'browser':
        $mime = image_type_to_mime_type($info[2]);
        header("Content-type: $mime");
        $output = NULL;
      break;
      case 'file':
        $output = $file;
      break;
      case 'return':
        return $image_resized;
      break;
      default:
      break;
    }

    if(file_exists($output))
    {
        @unlink($output);
    }

    switch($info[2])
    {
      case IMAGETYPE_GIF:
        imagegif($image_resized, $output);
      break;
      case IMAGETYPE_JPEG:
        imagejpeg($image_resized, $output, 100);
      break;
      case IMAGETYPE_PNG:
        imagepng($image_resized, $output);
      break;
      default:
        return false;
    }
    return true;
}

this is how, i call this function at the time of uploading an image.

                        do_resize_image($myimgnew, "380", "265", false, $getset['imgdir']."/img/".$upload);
                        do_resize_image($myimgnew, "102", "72", false, $getset['imgdir']."/img2/".$upload);

Recommended Answers

All 9 Replies

thatt does not go with my existing function or may be am out of ideas. Thanks

Why not? You could first do your resize function, then add the watermark with that function.

Hi, its in smarty and giving loads of error on the function called page

Warning: Missing argument 2 for watermark_image(), called in /home/123/public_html/view.php on line 63 and defined in /home/123/public_html/include/functions/main.php on line 2973

Warning: imagecreatefrompng(footerlogo.png) [function.imagecreatefrompng]: failed to open stream: No such file or directory in /home/123/public_html/include/functions/main.php on line 2974

Warning: imagesx() expects parameter 1 to be resource, boolean given in /home/123/public_html/include/functions/main.php on line 2988

Warning: imagesy() expects parameter 1 to be resource, boolean given in /home/123/public_html/include/functions/main.php on line 2988

Warning: imagecopy() expects parameter 2 to be resource, boolean given in /home/123/public_html/include/functions/main.php on line 2988

Those are coding errors. You are not passing enough parameters, the other errors are probably a result of that too.

Thanks for the info

Hi, thanks so much, it is working perfectly fine as per my need. But only thing is image is blackened out where ever it has a white background and also watermark image is distorted and no clarity, i tried with bigger size and smaller size, but not getting clarity at all.

as in the function it shows, my image width is 380 and height is 265.

Any help on this, I even tried with scaling down to 6 or 8 or 2, but none worked.

Now, I solved with watermark iamge distortion, now how to avoid the black color which is covering up on white color?

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.