Rumah > pembangunan bahagian belakang > tutorial php > Anda mesti faham cara menambah tera air imej dalam PHP

Anda mesti faham cara menambah tera air imej dalam PHP

WBOY
Lepaskan: 2023-04-10 17:56:01
asal
6184 orang telah melayarinya

Dalam artikel sebelumnya, saya membawakan anda "Bagaimana untuk mengezum dan memangkas imej dalam PHP? (Penjelasan terperinci tentang contoh) 》, yang memperkenalkan cara mengezum dan memangkas grafik dalam PHP melalui contoh Artikel ini terus melihat pengetahuan pemprosesan grafik dalam PHP dan bagaimana kita harus menambah tera air. Semoga ia membantu semua orang!

Anda mesti faham cara menambah tera air imej dalam PHP

Dalam kehidupan seharian kita, untuk mengelakkan gambar kita dicuri, kita sering melihat tera air ditambah pada beberapa gambar Contohnya, di laman web kita, masukkan fail gambar Tera air akan ditambahkan secara automatik ke sudut kanan bawah Jadi bagaimana kesan tera air ini dicapai? Kesan penambahan tera air pada imej boleh dicapai melalui PHP.

Dalam artikel sebelumnya, operasi memotong imej dan meletakkannya pada imej sasaran adalah agak serupa dengan menambah tera air, anda perlu menggunakan fungsi imagecopymerge.

<strong><span style="font-size: 18px;">imagecopymerge</span></strong>Fungsi

Format sintaks fungsi imagecopymerge adalah seperti berikut:

imagecopymerge($目标图片,$来源图片,$目标开始的x ,$目标开始的y,$来源的x ,$来源的y ,$来源的宽 ,$来源的高 ,$透明度)
Salin selepas log masuk

Nilai ketelusan ialah 0 -100 ialah integer Lebih besar nilai ketelusan, lebih legap tera air.

Seterusnya, mari kita lihat cara menambah tera air pada imej melalui contoh:

Mula-mula, sediakan imej bernama test.png dan tera air bernama logo.png Imej diletakkan dalam direktori akar kami

Anda mesti faham cara menambah tera air imej dalam PHP

Perhatikan bahawa di atas adalah contoh imej, tera air di bawah tidak saya tambahkan, ia ditambah secara automatik oleh laman web, untuk membezakan , tera air contoh adalah seperti berikut

Anda mesti faham cara menambah tera air imej dalam PHPAnda mesti faham cara menambah tera air imej dalam PHP

Kemudian, operasi adalah seperti berikut:

<?php
//打开目标图片
$dst = imagecreatefrompng(&#39;test.png&#39;);
//打开Logo来源图片
$src = imagecreatefrompng(&#39;logo.png&#39;);
//得到目标图片的宽高
$dst_info = getimagesize(&#39;test.png&#39;);
//得到logo图片的宽高
$src_info = getimagesize(&#39;logo.png&#39;);
//放到最右下脚可得出图片水印图片需要开始的位置即:
//x点位置:需要大图的宽 - 小图的宽;
//y点位置:放大图的高 - 小图的高
$dst_x = $dst_info[0] - $src_info[0];
$dst_y = $dst_info[1] - $src_info[1];
//要将图片加在右下脚
imagecopymerge($dst, $src, $dst_x, $dst_y, 0, 0, $src_info[0], $src_info[1], 50);
header(&#39;Content-type:image/png&#39;);
imagepng($dst);
imagedestroy($dst);
imagedestroy($src);
?>
Salin selepas log masuk

Hasil keluaran:

Anda mesti faham cara menambah tera air imej dalam PHP

Seperti yang dapat dilihat daripada hasil di atas, tera air dengan ketelusan 50 ditambah melalui fungsi imagecopymerge.

Perluaskan pengetahuan<strong><span style="font-size: 18px;">imagecopy</span></strong>salinan imej

Fungsi

imagecopy()

imagecopy($目标图片, $来源图片,$目标图片x,$目标图片y,$来源图片x,$来源图片y,$来源图片宽,$来源图片高)
Salin selepas log masuk
Bukan sahaja anda boleh menambah tera air menggunakan fungsi imagecopymerge, anda juga boleh menggunakan fungsi

, yang boleh menyalin sebahagian daripada fungsi tersebut adalah seperti berikut:

Maksudnya ialah memilih kawasan segi empat tepat dengan lebar w dan tinggi h dari (x, y) imej sumber kepada (x, y) imej sasaran.

imagesx(resource $image)
imagesy(resource $image)
Salin selepas log masuk

Gunakan fungsi imagesx() dan imagesy() dalam PHP untuk mendapatkan lebar dan tinggi imej masing-masing. Format sintaks mereka adalah seperti berikut:

<?php
    function watermark($img, $watermark, $district = 0,$watermarkquality = 95){
        $imginfo = @getimagesize($img);
        $watermarkinfo = @getimagesize($watermark);
        $img_w = $imginfo[0];
        $img_h = $imginfo[1];
        $watermark_w = $watermarkinfo[0];
        $watermark_h = $watermarkinfo[1];
        if($district == 0) $district = rand(1,9);
        if(!is_int($district) OR 1 > $district OR $district > 9) $district = 9;
        switch($district){
            case 1:
                $x = +5;
                $y = +5;
                break;
            case 2:
                $x = ($img_w - $watermark_w) / 2;
                $y = +5;
                break;
            case 3:
                $x = $img_w - $watermark_w - 5;
                $y = +5;
                break;
            case 4:
                $x = +5;
                $y = ($img_h - $watermark_h) / 2;
                break;
            case 5:
                $x = ($img_w - $watermark_w) / 2;
                $y = ($img_h - $watermark_h) / 2;
                break;
            case 6:
                $x = $img_w - $watermark_w;
                $y = ($img_h - $watermark_h) / 2;
                break;
            case 7:
                $x = +5;
                $y = $img_h - $watermark_h - 5;
                break;
            case 8:
                $x = ($img_w - $watermark_w) / 2;
                $y = $img_h - $watermark_h - 5;
                break;
            case 9:
                $x = $img_w - $watermark_w - 5;
                $y = $img_h - $watermark_h - 5;
                break;
        }
        switch ($imginfo[2]) {
            case 1:
                $im = @imagecreatefromgif($img);
                break;
            case 2:
                $im = @imagecreatefromjpeg($img);
                break;
            case 3:
                $im = @imagecreatefrompng($img);
                break;
        }
        switch ($watermarkinfo[2]) {
            case 1:
                $watermark_logo = @imagecreatefromgif($watermark);
                break;
            case 2:
                $watermark_logo = @imagecreatefromjpeg($watermark);
                break;
            case 3:
                $watermark_logo = @imagecreatefrompng($watermark);
                break;
        }
        if(!$im or !$watermark_logo) return false;
        $dim = @imagecreatetruecolor($img_w, $img_h);
        if(@imagecopy($dim, $im, 0, 0, 0, 0,$img_w,$img_h )){
            imagecopy($dim, $watermark_logo, $x, $y, 0, 0, $watermark_w, $watermark_h);
        }
        $file = dirname($img) . &#39;/w&#39; . basename($img);
        $result = imagejpeg ($dim,$file,$watermarkquality);
        imagedestroy($watermark_logo);
        imagedestroy($dim);
        imagedestroy($im);
        if($result){
            echo $img.&#39; 水印添加成功&#39;;
            return;
        }
        else {
            return false;
        }
    }
    $file = &#39;test.png&#39;;   //待加水印的图片地址
    $water = &#39;logo.png&#39;;  //水印图片的地址
    watermark($file, $water);
?>
Salin selepas log masuk
Contohnya adalah seperti berikut:


Hasil keluaran: Anda mesti faham cara menambah tera air imej dalam PHP

Anda mesti faham cara menambah tera air imej dalam PHPKesannya adalah seperti berikut:

Pembelajaran yang disyorkan: "Tutorial Video PHP"

Atas ialah kandungan terperinci Anda mesti faham cara menambah tera air imej dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan