谁有php批量处理图片、图片生成缩略图、图片添加水印的函数?

发布网友 发布时间:2022-04-06 04:23

我来回答

1个回答

热心网友 时间:2022-04-06 05:53

//批量处理图片、图片生成缩略图、图片添加水印

$dir = opendir (dirname(__FILE__));
while (!!$_file = readdir($dir)){
 list($filesname,$kzm)=explode(".",$_file);//获取扩展名
 if($kzm=="gif" or $kzm=="jpg" or $kzm=="JPG" or $kzm=="png") {
  if(!makethumb("$_file","120","120","100")){
   echo '执行成功!';
  }else{
   echo '执行失败!';
  }
 }
}
closedir($dir);


/**
 * 处理缩略图并添加水印函数
 * @access publiuc
 * @param $srcFile-----------图片文件名
 * @param $dstFile-----------另存的文件名
 * @param $dstW-------------图片保存的宽度
 * @param $dstH--------------图片保存的高度
 * @param $rate---------------图片保存的品质
 * @param $markwords-----水印文字
 * @param $markimage-----水印图片
 * @param 使用方法 makethumb("a.jpg","b.jpg","120","120","100");
 */
function makethumb($srcFile/*,$dstFile*/,$dstW,$dstH,$rate=100/*,$markwords=null,$markimage=null*/) {
 
 $data = GetImageSize($srcFile);
 switch($data[2]) {
  case 1:
  $im=@ImageCreateFromGIF($srcFile);
  break;
  case 2:
  $im=@ImageCreateFromJPEG($srcFile);
  break;
  case 3:
  $im=@ImageCreateFromPNG($srcFile);
  break;
  }
 if(!$im) return False;
 $srcW=ImageSX($im);
 $srcH=ImageSY($im);
 $dstX=0;
 $dstY=0;
 if ($srcW*$dstH>$srcH*$dstW) {
 $fdstH = round($srcH*$dstW/$srcW);
 $dstY = floor(($dstH-$fdstH)/2);
 $fdstW = $dstW;
 }
 else
 {
 $fdstW = round($srcW*$dstH/$srcH);
 $dstX = floor(($dstW-$fdstW)/2);
 $fdstH = $dstH;
 }
$ni=ImageCreateTrueColor($dstW,$dstH);
$dstX=($dstX<0)?0:$dstX;
$dstY=($dstX<0)?0:$dstY;
$dstX=($dstX>($dstW/2))?floor($dstW/2):$dstX;
$dstY=($dstY>($dstH/2))?floor($dstH/s):$dstY;
$white = ImageColorAllocate($ni,255,255,255);
$black = ImageColorAllocate($ni,0,0,0);
imagefilledrectangle($ni,0,0,$dstW,$dstH,$white);// 填充背景色
ImageCopyResized($ni,$im,$dstX,$dstY,0,0,$fdstW,$fdstH,$srcW,$srcH);
//if($markwords!=null){
// $markwords=iconv("gb2312","UTF-8",$markwords);
// //转换文字编码
// ImageTTFText($ni,20,30,450,560,$black,"simhei.ttf",$markwords); //写入文字水印,参数依次为,文字大小|偏转度|横坐标|纵坐标|文字颜色|文字类型|文字内容
//}elseif($markimage!=null) {
// $wimage_data = GetImageSize($markimage);
// switch($wimage_data[2]) {
// case 1:
//  $wimage=@ImageCreateFromGIF($markimage);
//  break;
// case 2:
//  $wimage=@ImageCreateFromJPEG($markimage);
//  break;
// case 3:
//  $wimage=@ImageCreateFromPNG($markimage);
//  break;
// }
// imagecopy($ni,$wimage,500,560,0,0,88,31); //写入图片水印,水印图片大小默认为88*31
// imagedestroy($wimage);
//}
$dstFile = $srcFile.'.gif';
ImageJpeg($ni,$dstFile,$rate);
//ImageJpeg($ni,$srcFile,$rate);
imagedestroy($im);
imagedestroy($ni);
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com