Водяной знак исчезает с прозрачным фоном - PullRequest
0 голосов
/ 02 мая 2020

Есть сценарий, который отображает изображения на странице с водяным знаком png, но когда я хочу уменьшить изображение водяного знака до 50%, появляется белый фон (но водяной знак исчезает до 50%) и когда я хочу изменить размер водяного знака изображение водяного знака png просто пропало и не отображается. Пожалуйста, помогите мне решить мою проблему с исчезновением и изменением размера. Ертл тебе всем.

<?php                                                   

/* Image source */
$src = strtolower($_GET['src']);

/* If no image src redirect to start page */
if(isset($src) && !empty($src) && $src !=0 && $src !=1) {

    header('content-type: image/jpeg');
    $path = pathinfo($src);
    $watermark = imagecreatefrompng('karantino.png');
    $watermark_width = imagesx($watermark);
    $watermark_height = imagesy($watermark);
    $image = imagecreatetruecolor($watermark_width, $watermark_height);

    if ($path["extension"]=="png") {

        $image = "no_img.jpg";

    }else if ($path["extension"] == "jpg" || $path["extension"] == "jpeg"){

        $image = imagecreatefromjpeg($src);
        $size = getimagesize($src);
        $dest_x = $size[0] - $watermark_width-10;
        $dest_y = $size[1] - $watermark_height-10;
        $alpha_channel = imagecolorallocatealpha($image, 255, 255, 255, 127);
        imagecolortransparent($image, $alpha_channel);
        imagefill($image, 0, 0, $alpha_channel);
        imagecopy($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height);
        imagesavealpha($image);
        imagejpeg($image);
        imagedestroy($image);
        imagedestroy($watermark);
    }   

} else{

    header("HTTP/1.1 301 Moved Permanently");
    header ("Location: /");
}

/*

to use this code, just create php file with random name (i use wt.php) and put code like this in your HTML page <img src="wt.php?src=your_jpg_file.jpg">

*/

?>

Ответы [ 2 ]

0 голосов
/ 02 мая 2020

Я нашел новое рабочее предложение для меня:

    <?php

    header("Content-type:image/jpeg");
    $src = $_GET["src"];


    /* If no image src redirect to start page, else do watermark */
    if(isset($src) && !empty($src) && $src!=0 && preg_match("/.(jpg|jpeg|png)$/", $src)){

        $path = pathinfo($src);

        if ($path["extension"] == "png") {

            $stamp = imagecreatefrompng("../../favicon.png");
            $im = imagecreatefrompng($src);

            $marge_right = 10;
            $marge_bottom = 10;
            $sx = imagesx($stamp);
            $sy = imagesy($stamp);

            imagecopy($im, $stamp, imagesx($im) - $sx - $marge_right,
            imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp),
            imagesy($stamp));

            imagepng($im);
            imagedestroy($im);
        }

        else if ($path["extension"] == "jpg" || $path["extension"] == "jpeg"){

            $stamp = imagecreatefrompng("../../favicon.png");
            $im = imagecreatefromjpeg($src);

            $marge_right = 10;
            $marge_bottom = 10;
            $sx = imagesx($stamp);
            $sy = imagesy($stamp);

            imagecopy($im, $stamp, imagesx($im) - $sx - $marge_right,
            imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp),
            imagesy($stamp));

            imagepng($im);
            imagedestroy($im);
        }

        else{

            /* If unknow format */
            $im = imagecreatefrompng("../important/no-photo.png");
            imagepng($im);
            imagedestroy($im);
        }
    }

    else{

        /* Redirect to start page if no string */
        header("HTTP/1.1 301 Moved Permanently");
        header ("Location: /");
    }

    /*

    to use this code, just create php file with random name and put code like this in your HTML page <img src="wt.php?src=your_jpg_file.jpg">

    */
?>

Но все еще есть проблема. Когда я использую код, подобный этому <img src="wt.php?src=/img/my_img/your_jpg_file.jpg"> вместо этого <img src="wt.php?src=your_jpg_file.jpg">, сценарий не отображает никакого изображения.

Есть идеи?

0 голосов
/ 02 мая 2020

Попробуйте изменить тип изображения на png (не изображение водяного знака). Потому что по умолчанию фон в jpg белый. А по поводу размера: измените оригинальный размер изображения не в коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...