我一直在互联网上寻找一个代码来批量文件夹中的水印图像。我想为它们添加一个透明的.png水印,但我能找到的唯一脚本是一(1)个单个文件而不是一个目录。
我试图搜索谷歌,但我没有运气,正如我在上面的文字中提到的那样,
答案 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);
}
}
结果:
原始
后
答案 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));
}
?>