Maison  >  Article  >  développement back-end  >  Vous devez comprendre comment ajouter des filigranes d'image en PHP

Vous devez comprendre comment ajouter des filigranes d'image en PHP

WBOY
WBOYoriginal
2021-10-20 14:59:436153parcourir

Dans l'article précédent, je vous ai présenté "Comment zoomer et recadrer des images en PHP ?" (Exemple détaillé) ", qui présente comment zoomer et recadrer des graphiques en PHP à travers des exemples. Cet article continue d'examiner la connaissance du traitement graphique en PHP et la manière dont nous devrions ajouter des filigranes aux images. J'espère que cela aidera tout le monde !

Vous devez comprendre comment ajouter des filigranes d'image en PHP

Dans notre vie quotidienne, afin d'éviter que nos photos ne soient volées, nous voyons souvent des filigranes ajoutés à certaines photos. Par exemple, sur notre site Internet, lorsque vous saisissez un fichier image, un filigrane y sera automatiquement ajouté. le coin inférieur droit, alors comment obtenir cet effet de filigrane ? L'effet de l'ajout de filigranes aux images peut être obtenu via PHP.

Dans l'article précédent, l'opération consistant à recadrer l'image et à la placer sur l'image cible est quelque peu similaire à l'ajout d'un filigrane. Afin d'ajouter un filigrane, vous devez utiliser la fonction imagecopymerge.

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

imagecopymerge函数的语法格式如下:

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

其中透明度的值是0-100的整数,透明度的值越大,水印越不透明。

接下来我们通过实例来看一下应该怎样给图片增加水印:

首先准备了一个名为test.png的图片和一个名为logo.png的水印图片放到了我们的根目录里

Vous devez comprendre comment ajouter des filigranes dimage en PHP

注意上面这个是示例图片,下面的水印并不是我添加的,是网站自动添加的,为了区分,实例的水印是下面这样的

Vous devez comprendre comment ajouter des filigranes dimage en PHPVous devez comprendre comment ajouter des filigranes dimage en PHP

那接下来,操作如下:

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

输出结果:

Vous devez comprendre comment ajouter des filigranes dimage en PHP

由上述结果可以看出,通过imagecopymerge函数添加了一个透明度为50的水印。

拓展知识<strong><span style="font-size: 18px;">imagecopy</span></strong>函数

不止使用imagecopymerge函数一种方法添加水印,也能够通过 imagecopy()

Le format de syntaxe de la fonction imagecopymerge est le suivant :

imagecopy($目标图片, $来源图片,$目标图片x,$目标图片y,$来源图片x,$来源图片y,$来源图片宽,$来源图片高)

La valeur de transparence est un entier de 0 à 100. Plus la valeur de transparence est élevée, plus le filigrane est opaque.

Ensuite, voyons comment ajouter un filigrane à une image à travers un exemple :


Tout d'abord, nous avons préparé une image nommée test.png et une image en filigrane nommée logo.png et les avons placées dans notre répertoire racine


Vous devez comprendre comment ajouter des filigranes dimage en PHP

Payer attention à ce qui précède Ceci est un exemple d'image. Le filigrane ci-dessous n'a pas été ajouté par moi, mais a été ajouté automatiquement par le site Web Pour distinguer, le filigrane de l'exemple est le suivantVous devez comprendre comment ajouter des filigranes dimage en PHP

Vous devez comprendre comment ajouter des filigranes dimage en PHPVous devez comprendre comment ajouter des filigranes dimage en PHP

Ensuite, l'opération est la suivante :

Vous devez comprendre comment ajouter des filigranes dimage en PHP

imagesx(resource $image)
imagesy(resource $image)

Résultat de sortie :

Vous devez comprendre comment ajouter des filigranes dimage en PHP

🎜Comme cela peut être vu les résultats ci-dessus, la fonction imagecopymerge est utilisée pour ajouter un filigrane avec une opacité de 50. 🎜🎜Développez vos connaissances<strong><span style="font-size: 18px;">copie d'image span> span></span></strong>Fonction🎜🎜Il n'y a pas qu'une seule façon d'ajouter des filigranes en utilisant le imagecopymerge, mais vous pouvez également Grâce à la fonction imagecopy() , elle peut copier une partie de la fonction. Son format de syntaxe est le suivant : 🎜
<?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);
?>
🎜Cela signifie, sélectionnez la largeur w à (x, y) de l'image source, Une zone rectangulaire de hauteur h à (x, y) de l'image cible. 🎜🎜🎜Utilisez les fonctions imagesx() et imagesy() en PHP pour obtenir respectivement la largeur et la hauteur de l'image. Leur format de syntaxe est le suivant : 🎜rrreee🎜L'exemple est le suivant : 🎜🎜rrreee🎜Résultat de sortie : 🎜🎜🎜🎜🎜🎜L'effet est le suivant : 🎜🎜🎜🎜🎜Apprentissage recommandé : "🎜Tutoriel vidéo PHP🎜" 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn