我开始是直接循环处理添加水印,定义好循环的次数。
$image = \think\Image::open('./image.png');
$size=$image->size();
$wz=array(); //水印图片坐标数组
$hnum=floor($size[1]/10); //根据高度循环10次
$wnum=floor($size[0]/2);
for($w=0;$w<$hnum;$w++){
$wz[1]=$w*$hnum;
$wz[0]=200;
$image->water('./logo.png',$wz,20)->save('water_image.png');
$wz[0]=(1*$wnum)+200;
$image->water('./logo.png',$wz,20)->save('water_image.png');
}这样循环出来,等了很久都没有反应。后来公司大佬看了我写的,然后告诉我, save()方法是保存文件的方法,每次循环一次就保存一下,所以就很慢很慢。
接下来换了种写法,我只在循环里用添加水印的方法。
for($w=0;$w<$hnum;$w++){
$wz[1]=$w*$hnum;
$wz[0]=200;
$image->water('./logo.png',$wz,20);
$wz[0]=(1*$wnum)+200;
$image->water('./logo.png',$wz,20);
}
$image->save('.'.$uploadPath.date("Ymd").'/text_image.png');这样就大概10多秒就可以,不过在保存图片之前需要 检查一下文件夹是否存在。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号