Maison > Article > développement back-end > Comment utiliser le module MagickWand pour ajouter un filigrane aux images en PHP
Cet article présente principalement la méthode d'utilisation de PHP pour ajouter des filigranes aux images à l'aide du module MagickWand. Les amis intéressés peuvent s'y référer. J'espère qu'il sera utile à tout le monde.
Lors de l'utilisation de la programmation PHP, il est souvent nécessaire d'ajouter un filigrane à l'image téléchargée pour déterminer le droit d'auteur et la source de l'image. Cependant, généralement l'emplacement du filigrane est le coin inférieur droit de l'image, mais images différentes Les niveaux de couleur sont différents. Parfois, le filigrane de nos images est le même que le niveau de couleur de l'image elle-même, ce qui rendra le filigrane discret
Le code suivant peut identifier automatiquement la couleur. niveaux de l'image et ajouter des images en fonction de la différence de niveau de couleur Filigrane, cela peut éviter les mêmes inconvénients du filigrane et de l'échelle de couleurs de l'image
<?php function add_wm($nmw_water, $src_file, $output_file, $x, $y) { if(file_exists($output_file)) return; $w1 = MagickGetImageWidth($nmw_water); $h1 = MagickGetImageHeight($nmw_water); $nmw =NewMagickWand(); MagickReadImage($nmw, $src_file); // 默认的加水印位置调整 $lt_w = 50; $lt_h = 50; if($x == 0){ $w = MagickGetImageWidth($nmw); $h = MagickGetImageHeight($nmw); $x = $w; $y = $h; }else{ // 根据具体情况调整 $lt_w = 30; $lt_h = 40; } MagickCompositeImage($nmw, $nmw_water, MW_OverCompositeOp, $x - $w1 - $lt_w, $y - $h1 - $lt_h); MagickWriteImage($nmw, $output_file); DestroyMagickWand($nmw); } // 还是groovy的eachFileRecurse好用啊 function add_wm_recurse($nmw_water, $to_dir, $output_dir, $arr) { $dp = dir($to_dir); while($file=$dp->read()){ if($file != '.' && $file != '..'){ if(is_dir($to_dir . '/' . $file)){ mkdir($output_dir . '/' . $file); add_wm_recurse($nmw_water, $to_dir . '/' . $file, $output_dir . '/' . $file, $arr); }else{ if(!array_key_exists($to_dir . '/' . $file, $arr)){ continue; } $sub_arr = $arr[$to_dir . '/' . $file]; if($sub_arr){ $x = intval($sub_arr[0]); $y = intval($sub_arr[1]); add_wm($nmw_water, $to_dir . '/' . $file, $output_dir . '/' . $file, $x, $y); } } } } $dp->close(); } $to_dir = './resized'; $output_dir = './output'; // 这个是我用java的ImageIO遍历图片像素获取的符合裤子颜色的区域的坐标array(posX, posY) $arr = array( array(50, 50) ); $water = './water.png'; $nmw_water =NewMagickWand(); MagickReadImage($nmw_water, $water); add_wm_recurse($nmw_water, $to_dir, $output_dir, $arr); DestroyMagickWand($nmw_water); ?>
Supplémentaire :
Module de traitement d'image PHP. Utilisation de MagickWand
MagickWand est un module PHP, utilisé pour accéder à la bibliothèque de traitement d'images d'ImageMagick. Ce qui suit est un extrait de code utilisant MagicWand :
$magick_wand=NewMagickWand(); MagickReadImage($magick_wand,'rose.jpg'); $drawing_wand=NewDrawingWand(); DrawSetFont($drawing_wand,"/usr/share/fonts/bitstream-vera/Vera.ttf"); DrawSetFontSize($drawing_wand,20); DrawSetGravity($drawing_wand,MW_CenterGravity); $pixel_wand=NewPixelWand(); PixelSetColor($pixel_wand,"white"); DrawSetFillColor($drawing_wand,$pixel_wand); if (MagickAnnotateImage($magick_wand,$drawing_wand,0,0,0,"Rose") != 0) { MagickEchoImageBlob( $magick_wand ); } else { echo MagickGetExceptionString($magick_wand); } ?>
Méthode d'installation :
1 Téléchargez php_magickwand_q16_st.dll pour 5.2.x
2. Placez-le dans le répertoire d'extension PHP <.>3. Ajoutez extension=php_magickwand_q16_st.dll au fichier php.ini
4. Redémarrez Apache
Recommandations associées :
exemple de partage de classe de téléchargement de fichier php
Explication détaillée de la classe de pagination php avec des exemples
Explication détaillée de la classe de panier d'achat php avec une période de stockage d'un jour
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!