//图片批量下载
function downloads(){
$id = I("test");
//根据id获取数据库中的信息
$idstr = implode(",",$id);
$map['id'] = array('in',$idstr);
$file = M("Pic")->field("id,path")->where($map)->select();
# 把图片的url存放在新的一位数组中
$times = date('YmdHis',time());
!is_dir('Uploads/images/'.$times) ? mkdir('Uploads/images/'.$times):null;//创建目录
for($j = 0;$j < count($file);$j++){
//把下载的图片存到本地
$img = explode('/', $file[$j]["path"]);
$images = $img[count($img)-1];
$filename = 'Uploads/images/'.$times.'/'.$images;
file_put_contents($filename, file_get_contents($file[$j]["path"]));
//获取加水印的内容
$waterText = "水印图片";
//加水印
$this->imageWaterMark($filename,$waterPos,$waterImage,$waterText);
}
//下载压缩图片文件
require_once "Public/zip.php";
$zip = new PHPZip();
$zip->downloadZip('Uploads/images/'.$times, $times.".zip");
}
//水印方法
imageWaterMark($groundImage,$waterPos=0,$waterImage="",$waterText="",$textFont=10,$textColor="#FF0000")
{
header("Content-Type:text/html;charset=utf-8");
$isWaterImage = FALSE;
$formatMsg = "暂不支持该文件格式,请用图片处理软件将图片转换为GIF、JPG、PNG格式。";
//读取水印文件
if(!empty($waterImage) && file_exists($waterImage))
{
$isWaterImage = TRUE;
$water_info = getimagesize($waterImage);
$water_w = $water_info[0];//取得水印图片的宽
$water_h = $water_info[1];//取得水印图片的高
switch($water_info[2])//取得水印图片的格式
{
case 1:$water_im = imagecreatefromgif($waterImage);break;
case 2:$water_im = imagecreatefromjpeg($waterImage);break;
case 3:$water_im = imagecreatefrompng($waterImage);break;
default:die($formatMsg);
}
}
//读取背景图片
if(!empty($groundImage) && file_exists($groundImage))
{
$ground_info = getimagesize($groundImage);
$ground_w = $ground_info[0];//取得背景图片的宽
$ground_h = $ground_info[1];//取得背景图片的高
switch($ground_info[2])//取得背景图片的格式
{
case 1:$ground_im = imagecreatefromgif($groundImage);break;
case 2:$ground_im = imagecreatefromjpeg($groundImage);break;
case 3:$ground_im = imagecreatefrompng($groundImage);break;
default:die($formatMsg);
}
}
else
{
die("需要加水印的图片不存在!");
}
//在底部画黑色的背景
imagefilledrectangle ( $ground_im, 0, $ground_h-35,$ground_w,$ground_h, imagecolorallocate($ground_im,0,0,0) );
//水印位置
if($isWaterImage)//图片水印
{
$w = $water_w;
$h = $water_h;
$label = "图片的";
}
else//文字水印
{
$temp = imagettfbbox(ceil($textFont*5),0,"cour.ttf",$waterText);//取得使用 TrueType 字体的文本的范围 $w = $temp[2] - $temp[6];
$h = $temp[3] - $temp[7];
unset($temp);
$label = "文字区域";
}
if( ($ground_w<$w) || ($ground_h<$h) )//($ground_w<$w)
{
echo "需要加水印的图片的长度或宽度比水印".$label."还小,无法生成水印!";
return;
}
switch($waterPos)
{
case 0://随机
$posX = rand(0,($ground_w - $w));
$posY = rand(0,($ground_h - $h));
break;
case 1://1为顶端居左
$posX = 0;
$posY = 0;
break;
case 2://2为顶端居中
$posX = ($ground_w - $w) / 2;
$posY = 0;
break;
case 3://3为顶端居右
$posX = $ground_w - $w;
$posY = 0;
break;
case 4://4为中部居左
$posX = 0;
$posY = ($ground_h - $h) / 2;
break;
case 5://5为中部居中
$posX = ($ground_w - $w) / 2;
$posY = ($ground_h - $h) / 2;
break;
case 6://6为中部居右
$posX = $ground_w - $w;
$posY = ($ground_h - $h) / 2;
break;
case 7://7为底端居左
$posX = 0;
$posY = $ground_h - $h;
break;
case 8://8为底端居中
$posX = ($ground_w - $w) / 2;
$posY = $ground_h - $h;
break;
case 9://9为底端居右
$posX = $ground_w - $w - 10; // -10 是距离右侧10px 可以自己调节
$posY = $ground_h - $h - 10; // -10 是距离底部10px 可以自己调节
break;
default://随机
$posX = rand(0,($ground_w - $w));
$posY = rand(0,($ground_h - $h));
break;
}
//设定图像的混色模式
imagealphablending($ground_im, true);
if($isWaterImage)//图片水印
{
imagecopy($ground_im, $water_im, $posX, $posY, 0, 0, $water_w,$water_h);//拷贝水印到目标文件
}
else//文字水印
{
if( !empty($textColor) && (strlen($textColor)==7) )
{
$R = hexdec(substr($textColor,1,2));
$G = hexdec(substr($textColor,1,2));
$B = hexdec(substr($textColor,1,2));
}
else
{
die("水印文字颜色格式不正确!");
}
//在背景图片上写文字
imagettftext($ground_im, $textFont, 0, $posX, $ground_h-20, imagecolorallocate($ground_im, $R, $G, $B), "cour.ttf",$waterText);
}
//生成水印后的图片
@unlink($groundImage);
switch($ground_info[2])//取得背景图片的格式
{
case 1:imagegif($ground_im,$groundImage);break;
case 2:imagejpeg($ground_im,$groundImage);break;
case 3:imagepng($ground_im,$groundImage);break;
default:die($formatMsg);
}
//释放内存
if(isset($water_info)) unset($water_info);
if(isset($water_im)) imagedestroy($water_im);
unset($ground_info);
imagedestroy($ground_im);
}
//中文乱码(或者写入的字体文件类型有误,不支持中文)
//$waterText = iconv("gb2312//IGNORE","utf-8",$waterText);
//$waterText = mb_convert_encoding($waterText,'utf-8','gb2312');