使用GD批量水印图像

时间:2014-08-10 12:16:33

标签: php gd watermark

我一直在互联网上寻找一个代码来批量文件夹中的水印图像。我想为它们添加一个透明的.png水印,但我能找到的唯一脚本是一(1)个单个文件而不是一个目录。

我试图搜索谷歌,但我没有运气,正如我在上面的文字中提到的那样,

2 个答案:

答案 0 :(得分:0)

我制作了这个代码,它将水印粘贴在另一个图像的中间位置。 它在浏览器中工作正常,但它不在命令行中 我希望它适合你。

$dir_to_img='Wallpapers_Azul';
$watermark = "angel.png";
$dir_to_new_image='watered';

    if(is_dir($dir_to_img)){
        if($dir = opendir($dir_to_img)){
            while(($archivo = readdir($dir)) !== false){
                if($archivo != '.' && $archivo != '..' && $archivo != '.htaccess'){
                    if(substr($archivo, -4) == '.jpg' || substr($archivo, -4) == '.JPG') //only jpg files

            $im = imagecreatefrompng($watermark);
            $im2 = imagecreatefromjpeg($dir_to_img."/".$archivo);

                imagecopy($im2, $im, (imagesx($im2)/2)-(imagesx($im)/2), (imagesy($im2)/2)-(imagesy($im)/2), 0, 0, imagesx($im), imagesy($im));

        if(!is_dir($dir_to_new_image)){   //save to another dir
            mkdir($dir_to_new_image, 0777, true);
        }

        imagejpeg($im2,"$dir_to_new_image/$archivo",90);
        imagedestroy($im);
        imagedestroy($im2);
                }
            }
        closedir($dir);
        }
    }

结果:

原始

enter image description here

enter image description here

答案 1 :(得分:0)

使用此代码使用TopiLib

<?php 
function renderToImage($inputImagePath, $watermarkImagePath)
{
require './topi.lib.min';
$panel = new \TopiLib\TopiPanel('png transparent', 9, 0, 0, 0);
$panel->createFromPNG($inputImagePath);
$img = new \TopiLib\TopiImage($watermarkImagePath, 'transparent png');
$img->position = 'left-bottom';      //You can use 'fill', 'fit', 'stretch', 'tile', 'center', 'right', 'right-top', 'right-bottom', 'left', 'left-top', 'left-bottom'.
//Or you can change startX and startY properties
//For text watermark use TopiText object
$panel->addImage($img);    
$panel->renderToImage($inputImagePath . "Edited." . pathinfo($inputImagePath, PATHINFO_EXTENSION));
}
?>