0

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);

Edited by innovateuk

4
Contributors
9
Replies
10
Views
5 Years
Discussion Span
Last Post by innovateuk
0

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

0

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

Edited by innovateuk

0

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

0

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.

0

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

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.