php文件上传类可生成缩略图代码,产品新增的多图上传

By admin in 4858.com on 2019年1月26日

出品新增:多图上传

例1

/*
* 作用:PHP图片水印 (水印支持图片或文字)
* 参数:
* $groundImage
背景图片,即需求加水印的图形,暂只援救GIF,JPG,PNG格式;
* $waterPos 水印地点,有10种状态,0为随机地点;
* 1为顶端居左,2为顶端居中,3为顶端居右;
* 4为当道居左,5为中心居中,6为宗旨居右;
* 7为底端居左,8为底端居中,9为底端居右;
* $waterImage 图片水印,即作为水印的图纸,暂只帮忙GIF,JPG,PNG格式;
* $waterText 文字水印,即把文字作为为水印,帮忙ASCII码,不协助普通话;
* $textFont 文字大小,值为1、2、3、4或5,默认为5;
* $textColor 文字颜色,值为十六进制颜色值,默许为#FF0000(红色);
*
* 注意:Support GD 2.0,Support FreeType、GIF Read、GIF Create、JPG
、PNG
* $waterImage 和 $waterText 最好不用同时使用,选中间之一即可,优先选择$waterImage。
*
当$waterImage有效时,参数$waterString、$stringFont、$stringColor均不奏效。
* 加水印后的图纸的公文名和 $groundImage 一样。
* 作者:longware @ 2004-11-3 14:15:13
*/
function
imageWaterMark($groundImage,$waterPos=0,$waterImage=””,$waterText=””,$textFont=5,$textColor=”#FF0000″)
{
$isWaterImage = FALSE;
$formatMsg =
“暂不协助该文件格式,请用图片处理软件将图纸转换为GIF、JPG、PNG格式。”;

<?php       

1:html的更改

复制代码 代码如下:

//读取水印文件
if(!emptyempty($waterImage) && file_exists($waterImage))
{
$isWaterImage = TRUE;
$water_info = getimagesize($waterImage);
$water_w = $water_info[0];//取得水印图片的宽
$water_h = $water_info[1];//取得水印图片的高

 代码如下

在 type=file的input框中添加multiple=”multiple” name属性中必须抬高[]
,否则$_FILES只可以接受最终一张

<?php
Header(“Content-type: image/png”); /*公告浏览器,要出口图像*/
$im = imagecreate(400 , 300); /*概念图像的分寸*/
$gray = ImageColorAllocate($im , 235 , 235 , 235);
$pink = ImageColorAllocate($im, 255 , 128 , 255);
$fontfile = “simkai.ttf”;
/* $fontfile 字体的门路,视操作系统而定,能够是 simhei.ttf(大篆) ,
SIMKAI.TTF(仿宋) , SIMFANG.TTF(草书) ,SIMSUN.TTC(黑体&新陶文) 等 GD
协助的普通话字体*/
$str = iconv(‘GB2312′,’UTF-8′,’汉语水印’); /*将 gb2312 的字符集转换成
UTF-8 的字符*/
ImageTTFText($im, 30, 0, 100, 200, $pink , $fontfile , $str);
/* 参预粤语水印 */
Imagepng($im);
ImageDestroy($im);
?>

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 ($_GET[‘action’] == ‘save’) {       
      
    $up = new upload();       
   
$up->set_dir(dirname(__FILE__).’/upload/’,'{y}/{m}’);       
    $up->set_thumb(100,80);       
   
$up->set_watermark(dirname(__FILE__).’/jblog/images/watermark.png’,6,90);       
    $fs = $up->execute();       
      
    var_dump($fs);       
}    

新添加<ul class=”images”></ul>标签,该标签用来突显上传的图片

例2

//读取背景图片
if(!emptyempty($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(”须要加水印的图样不存在!”);
}

 代码如下

2:js的更改

<?php
//
****************************************
//
// 成效:给图片添加文字
// 参数: $img 图片文件名
// $new_img 另存图片文件名,借使为空表示不另存图片
// $text 字符串内容
// text_size 字符串大小
// text_angle 字型串输出角度
// text_x 字符串输出 x 坐标
// text_y 字符串输出 y 坐标
// $text_font 字型文件名
// $r,$g,$b 字符串颜色RGB值
//
****************************************
//
function img_text($img, $new_img, $text, $text_size, $text_angle,
$text_x, $text_y, $text_font, $r, $g, $b){
$text=iconv(“gb2312″,”UTF-8”,$text);
Header(“Content-type: image/gif”);
$im = @imagecreatefromstring(file_get_contents($img)) or die
(“打开图片战败!”);
$color = ImageColorAllocate($im, $r,$g,$b);
//ImageTTFText(int im, int size, int angle, int x, int y, int col,
string fontfile, string text):
//本函数将 TTF (TrueType Fonts) 字型文字写入图片。
//参数: size 为字形的尺码;
// angle 为字型的角度,顺时针统计,0 度为水平(由左到右),90
度则为由下到上的文字;
// x,y 二参数为文字的坐标值 (原点为左上角);
// col 为字的颜色;
// fontfile 为字型文件名称;
// text 是字符串内容。
ImageTTFText($im, $text_size, $text_angle, $text_x, $text_y, $color,
$text_font, $text);
if ($new_img==””):
ImageGif($im); // 不保留图片,只浮现
else:
ImageGif($im,$new_img); // 保存图片,但不展现
endif;
ImageDestroy($im); //甘休图形,释放内存空间
}
?>

//水印地方
if($is沃·特(W·at)erImage)//图片水印
{
$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) )
{
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;
$posY = $ground_h – $h;
break;
default://随机
$posX = rand(0,($ground_w – $w));
$posY = rand(0,($ground_h – $h));
break;
}

<html>       
    <head><title>test</title></head>       
    <body style=”margin:0;padding:0″>       
    <form name=”upload” method=”post” action=”?action=save”
enctype=”multipart/form-data” style=”margin:0″>       
        <input type=”file” name=”attach[]” />       
        <input type=”file” name=”attach[]” />       
        <input type=”submit” name=”submit” value=”上 传”
/>       
    </form>       
    </body>       
</html> 

循环将每张图片进行监听,监听为止之后将每张图拼接到对相应的li中,将li追加到
.images目的元素内部的背后

例3

//设定图像的混色形式
imagealphablending($ground_im, true);

 

代码:

复制代码 代码如下:

if($is沃·特(W·at)erImage)//图片水印
{
imagecopy($ground_im, $water_im, $posX, $posY, 0, 0,
$water_w,$water_h);//拷贝水印到对象文件
}
else//文字水印
{
if( !emptyempty($textColor) && (strlen($textColor)==7) )
{
$R = hexdec(substr($textColor,1,2));
$G = hexdec(substr($textColor,3,2));
$B = hexdec(substr($textColor,5));
}
else
{
die(”水印文字颜色格式不正确!”);
}
imagestring ( $ground_im, $textFont, $posX, $posY, $waterText,
imagecolorallocate($ground_im, $R, $G, $B));
}

 代码如下

var str=”<li>”; //e.target.result就是最后的路线地址

<?php
/*
* 效能:PHP图片水印 (水印协助图片或文字)
* 参数:
* $groundImage
背景图片,即必要加水印的图片,暂只协助GIF,JPG,PNG格式;
* $waterPos 水印地点,有10种情景,0为随机地方;
* 1为顶端居左,2为顶端居中,3为顶端居右;
* 4为当道居左,5为中央居中,6为中央居右;
* 7为底端居左,8为底端居中,9为底端居右;
* $waterImage 图片水印,即作为水印的图样,暂只支持GIF,JPG,PNG格式;
* $waterText 文字水印,即把文字作为为水印,辅助ASCII码,不扶助普通话;
* $textFont 文字大小,值为1、2、3、4或5,默许为5;
* $textColor 文字颜色,值为十六进制颜色值,默许为#FF0000(红色);
*
* 注意:Support GD 2.0,Support FreeType、GIF Read、GIF Create、JPG
、PNG
* $waterImage 和 $waterText 最好不用同时利用,选中间之一即可,优先使用
$waterImage。
*
当$waterImage有效时,参数$waterString、$stringFont、$stringColor均不见效。
* 加水印后的图纸的公文名和 $groundImage 一样。
* 作者:longware @ 2004-11-3 14:15:13
*/
function
imageWaterMark($groundImage,$waterPos=0,$waterImage=””,$waterText=””,$textFont=5,$textColor=”#FF0000″)
{
$isWaterImage = FALSE;
$formatMsg =
“暂不协助该文件格式,请用图片处理软件将图纸转换为GIF、JPG、PNG格式。”;
//读取水印文件
if(!emptyempty($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(!emptyempty($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(”必要加水印的图片不设有!”);
}
//水印地点
if($is沃·特(W·at)erImage)//图片水印
{
$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) )
{
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;
$posY = $ground_h – $h;
break;
default://随机
$posX = rand(0,($ground_w – $w));
$posY = rand(0,($ground_h – $h));
break;
}
//设定图像的混色方式
imagealphablending($ground_im, true);
if($is沃·特(W·at)erImage)//图片水印
{
imagecopy($ground_im, $water_im, $posX, $posY, 0, 0,
$water_w,$water_h);//拷贝水印到对象文件
}
else//文字水印
{
if( !emptyempty($textColor) && (strlen($textColor)==7) )
{
$R = hexdec(substr($textColor,1,2));
$G = hexdec(substr($textColor,3,2));
$B = hexdec(substr($textColor,5));
}
else
{
die(”水印文字颜色格式不科学!”);
}
imagestring ( $ground_im, $textFont, $posX, $posY, $waterText,
imagecolorallocate($ground_im, $R, $G, $B));
}
//生成水印后的图样
@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($errorMsg);
}
//释放内存
if(isset($water_info)) unset($water_info);
if(isset($water_im)) imagedestroy($water_im);
unset($ground_info);
imagedestroy($ground_im);
}
//—————————————————————————————
$id=$_REQUEST[‘id’];
$num = count($_FILES[‘userfile’][‘name’]);
print_r($_FILES[‘userfile’]);
print_r($_FILES[‘userfile’][‘name’]);
echo $num;
echo “<bR>”;
if(isset($id)){
for($i=0;$i<$id;$i++){
if(isset($_FILES) && !emptyempty($_FILES[‘userfile’]php文件上传类可生成缩略图代码,产品新增的多图上传。) &&
$_FILES[‘userfile’][‘size’]>0)
{
$uploadfile = “./”.time().”_”.$_FILES[‘userfile’][name][$i];
echo “<br>”;
echo $uploadfile;
if (copy($_FILES[‘userfile’][‘tmp_name’][$i], $uploadfile))
{
echo “OK<br>”;
//文字水印
//imageWaterMark($uploadfile,5,””,”HTTP://www.lvye.info”,5,”#cccccc“);
//图片水印
$waterImage=”logo_ok1.gif”;//水印图片路径
imageWaterMark($uploadfile,9,$waterImage);
echo “<img src=””.$uploadfile.”” border=”0”>”;
}
else
{
echo “Fail<br>”;
}
}
}
}
?>
<form enctype=”multipart/form-data” method=”POST”>
<?php
for($a=0;$a<$id;$a++){
echo “文件: <input name=”userfile[]” type=”file”><br>”;
}
?>
<input type=”submit” value=”上传”>
</form>

//生成水印后的图纸
@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($errorMsg);
}

class upload {       
      
    var $dir;            //附件存放物理目录       
    var $time;           //自定义文件上传时间       
    var $allow_types;    //允许上传附件类型       
    var $field;          //上传控件名称       
    var $maxsize;        //最大允许文件大小,单位为KB       
      
    var $thumb_width;    //缩略图宽度       
    var $thumb_height;   //缩略图高度       
      
    var $watermark_file; //水印图片地址       
    var $watermark_pos;  //水印地方       
    var $watermark_trans;//水印透明度       
      
      
    //构造函数       
    //$types : 允许上传的文件类型 , $maxsize : 允许大小 ,  $field :
上传控件名称 , $time : 自定义上传时间       
    function upload($types = ‘jpg|png’, $maxsize = 1024, $field =
‘attach’, $time = ”) {       
        $this->allow_types = explode(‘|’,$types);       
        $this->maxsize = $maxsize * 1024;       
        $this->field = $field;       
        $this->time = $time ? $time : time();       
    }       
      
    //设置并创办文件具体存放的目录       
    //$basedir  : 基目录,必须为大体路径       
    //$filedir  : 自定义子目录,可用参数{y}、{m}、{d}       
    function set_dir($basedir,$filedir = ”) {       
        $dir = $basedir;       
        !is_dir($dir) && @mkdir($dir,0777);       
        if (!emptyempty($filedir)) {       
            $filedir =
str_replace(array(‘{y}’,'{m}’,'{d}’),array(date(‘Y’,$this->time),date(‘m’,$this->time),date(‘d’,$this->time)),strtolower($filedir));       
            $dirs = explode(‘/’,$filedir);       
            foreach ($dirs as $d) {       
                !emptyempty($d) && $dir .= $d.’/’;       
                !is_dir($dir) && @mkdir($dir,0777);       
            }       
        }       
        $this->dir = $dir;       
    }       
      
    //图片缩略图设置,倘诺不生成缩略图则不用安装       
    //$width : 缩略图宽度 , $height : 缩略图中度       
    function set_thumb ($width = 0, $height = 0) {       
        $this->thumb_width  = $width;       
        $this->thumb_height = $height;       
    }       
      
    //图片水印设置,假诺不生成添加水印则不用安装       
    //$file : 水印图片 , $pos : 水印地点 , $trans : 水印透明度       
    function set_watermark ($file, $pos = 6, $trans = 80) {       
        $this->watermark_file  = $file;       
        $this->watermark_pos   = $pos;       
        $this->watermark_trans = $trans;       
    }       
      
   
/*—————————————————————-     
   
执行文书上传,处理完回到一个蕴涵上传成功或破产的文本音讯数组,     
    其中:name
为文件名,上传成功时是上传到服务器上的文本名,上传战败则是本地的文本名     
          dir  为服务器上存放该附件的情理路径,上传失败不存在该值     
          size 为附件大小,上传失败不设有该值     
          flag
为状态标识,1意味成功,-1意味文件类型不容许,-2代表文件大小超出     
   
—————————————————————–*/      
    function execute() {       
        $files = array(); //成功上传的文件音信       
        $field = $this->field;       
        $keys = array_keys($_FILES[$field][‘name’]);       
        foreach ($keys as $key) {       
            if (!$_FILES[$field][‘name’][$key])
continue;       
                   
            $fileext =
$this->fileext($_FILES[$field][‘name’][$key]);
//获取文件扩充名       
            $filename =
date(‘Ymdhis’,$this->time).mt_rand(10,99).’.’.$fileext;
//生成文件名       
            $filedir = $this->dir;  //附件实际存放目录       
            $filesize = $_FILES[$field][‘size’][$key];
//文件大小       
                   
            //文件类型不允许       
            if (!in_array($fileext,$this->allow_types)) {       
                $files[$key][‘name’] =
$_FILES[$field][‘name’][$key];       
                $files[$key][‘flag’] = -1;       
                continue;       
            }       
      
            //文件大小超出       
            if ($filesize > $this->maxsize) {       
                $files[$key][‘name’] =
$_FILES[$field][‘name’][$key];       
                $files[$key][‘name’] = $filesize;       
                $files[$key][‘flag’] = -2;       
                continue;       
            }       
      
            $files[$key][‘name’] = $filename;       
            $files[$key][‘dir’] = $filedir;       
            $files[$key][‘size’] = $filesize;       
      
            //保存上传文件并剔除临时文件       
            if
(is_uploaded_file($_FILES[$field][‘tmp_name’][$key]))
{       
               
move_uploaded_file($_FILES[$field][‘tmp_name’][$key],$filedir.$filename);       
               
@unlink($_FILES[$field][‘tmp_name’][$key]);       
                $files[$key][‘flag’] = 1;       
      
                //对图片举办加水印和转移缩略图       
                if (in_array($fileext,array(‘jpg’,’png’))) {       
                    if ($this->thumb_width) {       
                        if
($this->create_thumb($filedir.$filename,$filedir.’thumb_’.$filename))
{       
                            $files[$key][‘thumb’] =
‘thumb_’.$filename;  //缩略图文件名       
                        }       
                    }       
                   
$this->create_watermark($filedir.$filename);       
                }       
            }       
        }       
      
        return $files;       
    }       
      
    //创立缩略图,以同一的恢弘名生成缩略图       
    //$src_file : 来源图像路径 , $thumb_file : 缩略图路径       
    function create_thumb ($src_file,$thumb_file) {       
        $t_width  = $this->thumb_width;       
        $t_height = $this->thumb_height;       
      
        if (!file_exists($src_file)) return false;       
      
        $src_info = getImageSize($src_file);       
      
        //倘若来源图像小于或等于缩略图则拷贝源图像作为缩略图       
        if ($src_info[0] <= $t_width && $src_info[1] <=
$t_height) {       
            if (!copy($src_file,$thumb_file)) {       
                return false;       
            }       
            return true;       
        }       
      
        //按比例总括缩略图大小       
        if ($src_info[0] – $t_width > $src_info[1] –
$t_height) {       
            $t_height = ($t_width / $src_info[0]) *
$src_info[1];       
        } else {       
            $t_width = ($t_height / $src_info[1]) *
$src_info[0];       
        }       
      
        //取得文件扩大名       
        $fileext = $this->fileext($src_file);       
      
        switch ($fileext) {       
            case ‘jpg’ :       
                $src_img = ImageCreateFromJPEG($src_file);
break;       
            case ‘png’ :       
                $src_img = ImageCreateFromPNG($src_file);
break;       
            case ‘gif’ :       
                $src_img = ImageCreateFromGIF($src_file);
break;       
        }       
      
        //创造一个真彩色的缩略图像       
        $thumb_img =
@ImageCreateTrueColor($t_width,$t_height);       
      
        //ImageCopyResampled函数拷贝的图像平滑度较好,优先考虑       
        if (function_exists(‘imagecopyresampled’)) {       
           
@ImageCopyResampled($thumb_img,$src_img,0,0,0,0,$t_width,$t_height,$src_info[0],$src_info[1]);       
        } else {       
           
@ImageCopyResized($thumb_img,$src_img,0,0,0,0,$t_width,$t_height,$src_info[0],$src_info[1]);       
        }       
      
        //生成缩略图       
        switch ($fileext) {       
            case ‘jpg’ :       
                ImageJPEG($thumb_img,$thumb_file); break;       
            case ‘gif’ :       
                ImageGIF($thumb_img,$thumb_file); break;       
            case ‘png’ :       
                ImagePNG($thumb_img,$thumb_file); break;       
        }       
      
        //销毁临时图像       
        @ImageDestroy($src_img);       
        @ImageDestroy($thumb_img);       
      
        return true;       
      
    }       
      
    //为图片添加水印       
    //$file : 要添加水印的文书       
    function create_watermark ($file) {       
      
        //文件不设有则赶回       
        if (!file_exists($this->watermark_file) ||
!file_exists($file)) return;       
        if (!function_exists(‘getImageSize’)) return;       
               
        //检查GD协理的文件类型       
        $gd_allow_types = array();       
        if (function_exists(‘ImageCreateFromGIF’))
$gd_allow_types[‘image/gif’] = ‘ImageCreateFromGIF’;       
        if (function_exists(‘ImageCreateFromPNG’))
$gd_allow_types[‘image/png’] = ‘ImageCreateFromPNG’;       
        if (function_exists(‘ImageCreateFromJPEG’))
$gd_allow_types[‘image/jpeg’] = ‘ImageCreateFromJPEG’;       
      
        //获取文件音讯       
        $fileinfo = getImageSize($file);       
        $wminfo   = getImageSize($this->watermark_file);       
      
        if ($fileinfo[0] < $wminfo[0] || $fileinfo[1] <
$wminfo[1]) return;       
      
        if (array_key_exists($fileinfo[‘mime’],$gd_allow_types))
{       
            if (array_key_exists($wminfo[‘mime’],$gd_allow_types))
{       
                       
                //从文件成立图像       
                $temp =
$gd_allow_types[$fileinfo[‘mime’]]($file);       
                $temp_wm =
$gd_allow_types[$wminfo[‘mime’]]($this->watermark_file);       
      
                //水印地点       
                switch ($this->watermark_pos)
{                    
                    case 1 :  //顶部居左       
                        $dst_x = 0; $dst_y = 0;
break;                     
                    case 2 :  //顶部居中       
                        $dst_x = ($fileinfo[0] – $wminfo[0]) / 2;
$dst_y = 0; break;                       
                    case 3 :  //顶部居右       
                        $dst_x = $fileinfo[0]; $dst_y = 0;
break;                      
                    case 4 :  //尾部居左       
                        $dst_x = 0; $dst_y = $fileinfo[1];
break;                      
                    case 5 :  //尾部居中       
                        $dst_x = ($fileinfo[0] – $wminfo[0]) / 2;
$dst_y = $fileinfo[1]; break;            
                    case 6 :  //底部居右       
                        $dst_x = $fileinfo[0]-$wminfo[0]; $dst_y =
$fileinfo[1]-$wminfo[1]; break;       
                    default : //随机       
                        $dst_x =
mt_rand(0,$fileinfo[0]-$wminfo[0]); $dst_y =
mt_rand(0,$fileinfo[1]-$wminfo[1]);       
                }       
      
                if (function_exists(‘ImageAlphaBlending’))
ImageAlphaBlending($temp_wm,True); //设定图像的混色情势       
                if (function_exists(‘ImageSaveAlpha’))
ImageSaveAlpha($temp_wm,True); //保存完整的 alpha 通道音信       
      
                //为图像添加水印       
                if (function_exists(‘imageCopyMerge’)) {       
                   
ImageCopyMerge($temp,$temp_wm,$dst_x,$dst_y,0,0,$wminfo[0],$wminfo[1],$this->watermark_trans);       
                } else {       
                   
ImageCopyMerge($temp,$temp_wm,$dst_x,$dst_y,0,0,$wminfo[0],$wminfo[1]);       
                }       
      
                //保存图片       
                switch ($fileinfo[‘mime’]) {       
                    case ‘image/jpeg’ :       
                        @imageJPEG($temp,$file);       
                        break;       
                    case ‘image/png’ :       
                        @imagePNG($temp,$file);       
                        break;       
                    case ‘image/gif’ :        
                        @imageGIF($temp,$file);       
                        break;       
                }       
                //销毁零时图像       
                @imageDestroy($temp);       
                @imageDestroy($temp_wm);       
            }       
        }       
    }       
      
    //获取文件扩张名       
    function fileext($filename) {       
        return strtolower(substr(strrchr($filename,’.’),1,10));       
    }       
}   

str+=”<img src='”+e.target.result+”‘/>”; //表示图片

代码4

//释放内存
if(isset($water_info)) unset($water_info);
if(isset($water_im)) imagedestroy($water_im);
unset($ground_info);
imagedestroy($ground_im);
}
//—————————————————————————————
$id=$_REQUEST[‘id’];
$num = count($_FILES[‘userfile’][‘name’]);
print_r($_FILES[‘userfile’]);
print_r($_FILES[‘userfile’][‘name’]);

str+=”<input type=’hidden’ name=’check_images[]’
value='”+j+”‘/>”

复制代码 代码如下:

echo $num;
echo “<bR>”;
if(isset($id)){
for($i=0;$i<$id;$i++){

//用来储存要求丰硕的图片的下标,成效:中期在php页面用来确定该图形是还是不是被手动删除

充实中文水印
<?php
/*————————————————————-
**叙述:那是用于给指定图片加底部水印(不占用图片呈现区域)的自定义类,需创制对象调用
**创建:2007-10-09
**更新:2007-10-09
**证实:1、要求gd库协理,须要iconv支持(php5已经蕴涵不用加载)
2、只适合三种类型的图形,jpg/jpeg/gif/png,其他类型不处理
3、注意图片所在目录的性质必须可写
4、调用范例:
$objImg = new MyWaterDownChinese();
$objImg->Path = “images/”;
$objImg->FileName = “1.jpg”;
$objImg->Text =
“HAHAKONGJIAN[url]HTTP://HI.BAIDU.COM/LYSONCN[/url]”;
$objImg->Font = “./font/simhei.ttf”;
$objImg->Run();
**成员函数:
—————————————————————-*/
class MyWaterDownChinese{
var $Path = “./”; //图片所在目录相对于调用此类的页面的相对路径
var $FileName = “”; //图片的名字,如“1.jpg”
var $Text = “”; //图片要丰硕的水印文字,援救中文
var $TextColor = “#ffffff”;
//文字的水彩,gif图片时,字体颜色只好为黄色
var $TextBgColor = “#000000”; //文字的背景条的水彩
var $Font = “c://windows//fonts//simhei.ttf”;
//字体的存放目录,绝对路径
var $OverFlag = true;
//是还是不是要遮盖原图,默许为覆盖,不掩盖时,自动在原图文件名后+”_water_down”,如“1.jpg”=>
“1_water_down.jpg”
var $BaseWidth = 200; //图片的增幅至少要>=200,才会加上水印文字。
//——————————————————————
//成效:类的构造函数(php5.0以上的款型)
//参数:无
//返回:无
function __construct(){;}
//——————————————————————
//功效:类的析构函数(php5.0以上的花样)
//参数:无
//返回:无
function __destruct(){;}
//——————————————————————
//————————————
//成效:对象运行函数,给图片加上水印
//参数:无
//返回:无
function Run()
{
if($this->FileName == “” || $this->Text == “”)
return;
//检测是还是不是安装GD库
if(false == function_exists(“gd_info”))
{
echo “系统绝非设置GD库,不可能给图片加水印.”;
return;
}
//设置输入、输出图片路径名
$arr_in_name = explode(“.”,$this->FileName);
//
$inImg = $this->Path.$this->FileName;
$outImg = $inImg;
$tmpImg =
$this->Path.$arr_in_name[0].”_tmp.”.$arr_in_name[1];
//临时处理的图形,很关键
if(!$this->OverFlag)
$outImg =
$this->Path.$arr_in_name[0].”_water_down.”.$arr_in_name[1];
//检测图片是或不是存在
if(!file_exists($inImg))
return ;
//得到图片的属性
$groundImageType = @getimagesize($inImg);
$imgWidth = $groundImageType[0];
$imgHeight = $groundImageType[1];
$imgType = $groundImageType[2];
if($imgWidth < $this->BaseWidth) //小于基本宽度,不处理
return;
//图片不是jpg/jpeg/gif/png时,不处理
switch($imgType)
{
case 1:
$image = imagecreatefromgif($inImg);
$this->TextBgColor = “#ffffff”;
//gif图片字体只好为黑,所以背景颜色就安装为白色
break;
case 2:
$image = imagecreatefromjpeg($inImg);
break;
case 3:
$image = imagecreatefrompng($inImg);
break;
default:
return;
break;
}
//创立颜色
$color =
@imagecolorallocate($image,hexdec(substr($this->TextColor,1,2)),hexdec(substr($this->TextColor,3,2)),hexdec(substr($this->TextColor,5,2)));
//文字颜色
//生成一个空的图片,它的莫大在底层增加水印高度
$newHeight = $imgHeight+20;
$objTmpImg = @imagecreatetruecolor($imgWidth,$newHeight);
$colorBg =
@imagecolorallocate($objTmpImg,hexdec(substr($this->TextBgColor,1,2)),hexdec(substr($this->TextBgColor,3,2)),hexdec(substr($this->TextBgColor,5,2)));
//背景颜色
//填充图片的背景颜色
@imagefill ($objTmpImg,0,0,$colorBg);
//把原图copy到临时图片中
@imagecopy($objTmpImg,$image,0,0,0,0,$imgWidth,$imgHeight);
//创造要写入的水印文字对象
$objText = $this->createText($this->Text);
//总计要写入的水印文字的职分
$x = 5;
$y = $newHeight-5;
//写入文字水印
@imagettftext($objTmpImg,10,0,$x,$y,$color,$this->Font,$objText);
//生成新的图片,临时图片
switch($imgType)
{
case 1:
imagegif($objTmpImg,$tmpImg);
break;
case 2:
imagejpeg($objTmpImg,$tmpImg);
break;
case 3:
imagepng($objTmpImg,$tmpImg);
break;
default:
return;
break;
}
//释放资源
4858.com ,@imagedestroy($objTmpImg);
@imagedestroy($image);
//重新命名文件
if($this->OverFlag)
{
//覆盖原图
@unlink($inImg);
@rename($tmpImg,$outImg);
}
else
{
//不掩盖原图
@rename($tmpImg,$outImg);
}
}
//————————————–
//成效:创立水印文字对象
//参数:无
//重临:创设的水印文字对象
function createText($instring)
{
$outstring=””;
$max=strlen($instring);
for($i=0;$i<$max;$i++)
{
$h=ord($instring[$i]);
if($h>=160 && $i<$max-1)
{
$outstring .=
“”.base_convert(bin2hex(iconv(“gb2312″,”ucs-2″,substr($instring,$i,2))),16,10).”;”;
$i++;
}
else
{
$outstring .= $instring[$i];
}
}
return $outstring;
}
}//class
?>

if(isset($_FILES) && !emptyempty($_FILES[‘userfile’]) &&
$_FILES[‘userfile’][‘size’]>0)
{
$uploadfile = “./”.time().”_”.$_FILES[‘userfile’][name][$i];
echo “<br>”;
echo $uploadfile;
if (copy($_FILES[‘userfile’][‘tmp_name’][$i], $uploadfile))
{
echo “OK<br>”;

str+=”<div><img class=’delete’
src=’resources/images/fancy_close.png’/></div>”;

您可能感兴趣的篇章:

  • php文字水印和php图片水印完成代码(两种加水印方法)
  • 用来给图片加水印的PHP类
  • php图片加水印原理(超简单的实例代码)
  • php给图片添加文字水印方法汇总
  • 至上好用的一个php上传图片类(随机名,缩略图,加水印)
  • php加水印的代码(扶助半透明透明打水印,辅助png透明背景)
  • PHP 图片水印类代码
  • PHP图片处理之使用imagecopy函数添加图片水印实例
  • php gd2
    上传图片/文字水印/图片水印/等比例缩略图/完毕代码
  • Kindeditor编辑器添加图片上传水印作用(php代码)

//文字水印
//imageWaterMark($uploadfile,5,””,”HTTP://www.lvye.info”,5,”#cccccc“);

//已毕图片的删减作用

//图片水印
$waterImage=”logo_ok1.gif”;//水印图片路径
imageWaterMark($uploadfile,9,$waterImage);

str+=”</li>”;

echo “<img src=””.$uploadfile.”” border=”0”>”;
}
else
{
echo “Fail<br>”;
}
}
}
}

$(“.images”).append(str);

?>
<form enctype=”multipart/form-data” method=”POST”>
<?php
for($a=0;$a<$id;$a++){
echo “文件: <input name=”userfile[]” type=”file”><br>”;

点击相应的delete将相应的li删除,remove()

}
?>
<input type=”submit” value=”上传”>
</form>
?>

 

//上面那段代码是一段图片上传并且给上传的图片加水印

3;php文件更改:

参数表达:
$max_file_size  : 上传文件大小限制, 单位BYTE
$destination_folder : 上传文件路径
$watermark   : 是或不是附加水印(1为加水印,别的为不加水印);
应用表达:
1.
将PHP.INI文件之中的”extension=php_gd2.dll”一行后边的;号去掉,因为我们要用到GD库;

 

  1. 将extension_dir =改为你的php_gd2.dll所在目录;
    3.
    http://www.111cn.net/php.asp;
    ****************************************************/
    //上传文件类型列表
    $uptypes=array(
        ‘image/jpg’, 
        ‘image/jpeg’,
        ‘image/png’,
        ‘image/pjpeg’,
        ‘image/gif’,
        ‘image/bmp’,
        ‘image/x-png’
    );
    $max_file_size=2000000;     //上传文件大小限制, 单位BYTE
    $destination_folder=”uploadimg/”; //上传文件路径
    $watermark=1;      //是或不是附加水印(1为加水印,其余为不加水印);
    $watertype=1;      //水印类型(1为文字,2为图片)
    $waterposition=1;    
    //水印地方(1为左下角,2为右下角,3为左上角,4为右上角,5为居中);
    $waterstring=””;  //水印字符串
    $waterimg=”xplore.gif”;    //水印图片
    $imgpreview=1;      //是不是变动预览图(1为浮动,其余为不转移);
    $imgpreviewsize=1/2;    //缩略图比例
    ?>
    <html>
    <head>
    <title>ZwelL图片上传程序</title>
    <style
    type=”text/css教程”>
    <!–
    body
    {
         font-size: 9pt;
    }
    input
    {
         background-color: #66CCFF;
         border: 1px inset #CCCCCC;
    }
    –>
    </style>
    </head>
    <body>
    <form enctype=”multipart/form-data” method=”post” name=”upform”>
      上传文件:
      <input name=”upfile” type=”file”>
      <input type=”submit” value=”上传”><br>
      允许上传的文件类型为:<?=implode(‘, ‘,$uptypes)?>
    </form>
    <?php
    if ($_SERVER[‘REQUEST_METHOD’] == ‘POST’)
    {
        if (!is_uploaded_file($_FILES[“upfile”][tmp_name]))
        //是不是存在文件
        {
             echo “图片不存在www.111cn.net!”;
             exit;
        }
        $file = $_FILES[“upfile”];
        if($max_file_size < $file[“size”])
        //检查文件大小
        {
            echo “文件太大!”;
            exit;
        }
        if(!in_array($file[“type”], $uptypes))
        //检查文件类型
        {
            echo “文件类型不符!”.$file[“type”];
            exit;
        }
        if(!file_exists($destination_folder))
        {
            mkdir($destination_folder);
        }
        $filename=$file[“tmp_name”];
        $image_size = getimagesize($filename);
        $pinfo=pathinfo($file[“name”]);
        $ftype=$pinfo[‘extension’];
        $destination = $destination_folder.time().”.”.$ftype;
        if (file_exists($destination) && $overwrite != true)
        {
            echo “同名文件已经存在了”;
            exit;
        }
        if(!move_uploaded_file ($filename, $destination))
        {
            echo “移动文件出错”;
            exit;
        }
        $pinfo=pathinfo($destination);
        $fname=$pinfo[basename];
        echo ” <font
    color=red>已经打响上传</font><br>文件名:  <font
    color=blue>”.$destination_folder.$fname.”</font><br>”;
        echo ” 宽度:”.$image_size[0];
        echo ” 长度:”.$image_size[1];
        echo “<br> 大小:”.$file[“size”].” bytes”;
        if($watermark==1)
        {
            $iinfo=getimagesize($destination,$iinfo);
           
    $nimage=imagecreatetruecolor($image_size[0],$image_size[1]);
            $white=imagecolorallocate($nimage,255,255,255);
            $black=imagecolorallocate($nimage,0,0,0);
            $red=imagecolorallocate($nimage,255,0,0);
            imagefill($nimage,0,0,$white);
            switch ($iinfo[2])
            {
                case 1:
                $simage =imagecreatefromgif($destination);
                break;
                case 2:
                $simage =imagecreatefromjpeg($destination);
                break;
                case 3:
                $simage =imagecreatefrompng($destination);
                break;
                case 6:
                $simage =imagecreatefromwbmp($destination);
                break;
                default:
                die(“不协理的文件类型”);
                exit;
            }
           
    imagecopy($nimage,$simage,0,0,0,0,$image_size[0],$image_size[1]);
           
    imagefilledrectangle($nimage,1,$image_size[1]-15,80,$image_size[1],$white);
            switch($watertype)
            {
                case 1:   //加水印字符串
               
    imagestring($nimage,2,3,$image_size[1]-15,$waterstring,$black);
                break;
                case 2:   //加水印图片
                $simage1 =imagecreatefromgif(“xplore.gif”);
                imagecopy($nimage,$simage1,0,0,0,0,85,15);
                imagedestroy($simage1);
                break;
            }
            switch ($iinfo[2])
            {
                case 1:
                //imagegif($nimage, $destination);
                imagejpeg($nimage, $destination);
                break;
                case 2:
                imagejpeg($nimage, $destination);
                break;
                case 3:
                imagepng($nimage, $destination);
                break;
                case 6:
                imagewbmp($nimage, $destination);
                //imagejpeg($nimage, $destination);
                break;
            }
            //覆盖原上传文件
            imagedestroy($nimage);
            imagedestroy($simage);
        }
        if($imgpreview==1)
        {
        echo “<br>图片预览:<br>”;
        echo “<img src=””.$destination.””
    width=”.($image_size[0]*$imgpreviewsize).”
    height=”.($image_size[1]*$imgpreviewsize);
        echo ” alt=”图片预览: 文件名:”.$destination.”
    www.111cn.net上传时间:”>”;
        }
    }
    ?>

a: 通过判断$_POST[“check_images”] 确定是或不是有图表新增
,定义数组$images用来存储需求上传的图片

b:即便有新图片,循环判断$_FILES中的文件是还是不是有被手动删除

c: 若是没有被剔除 下边执行的代码作用:

概念数组$images $thunb_images $water_images 用来存放在原图 缩略图 水印图

看清文件的格式 判断文件的分寸

将图片从临时路径中改换来千古路径中

将图纸新的路线保存到$images数组中

调用缩略图函数,然后将缩略图的路径存放在$thunb_images数组中

调用水印图函数,然后将水印图的路线存放在$water_images数组中

d:循环完之后,

将$images,数组转化为json格式的字符串 追加到$_POST[“images”]中

将$thumb_images,数组转化为json格式的字符串
追加到$_POST[“thumb_images”]中

将$water_images,数组转化为json格式的字符串
追加到$_POST[“water_images”]中

e:新增,新增成功跳转,新增失败,提醒错误音讯

 

 

多图上传 删除:

1:判断是或不是有传递id

2:假若有照应的id,先查询id对应的笔录$arr

3:将id对应的笔录删除

4:假如剔除成功,将$arr表示图片的因素(包涵原图 缩略图
水印图)由字符串转化为数组格局

5:循环表示图片的数组,将图纸依次删除
unlink(“文件的门路”),删除完以后跳转

 

 

多图修改: (添加水印图 缩略图)

1: html的更改

在 type=file的input框中添加multiple=”multiple” name属性中务必抬高[]
,否则$_FILES只可以接受最终一张

在对应地方添加ul,在ul中加上通过foreach循环li,将成品对应的原图循环突显在页面中,每一张图都对应一个隐藏域,该隐藏域添加name=
“ready_check_image[]” ,并设置value的值,值为每一张图纸的下标

 

2:js的更改

当type=file的内容变更未来,将上传的每一张图纸突显ul的li中,每一张图片设置隐藏域,隐藏域添加neme=”check_image[]”
,并安装value值,值为每一站图片对应的下标

 

3:php的更改:

a:定义$images数组 $thumb_images数组 $water_images 数组

//处理修改中新增图片的步子

b:
判断是不是有上传新的图形,通过判断$_POST[“check_image”]是还是不是为空进行判断

一经有新图片,循环判断$_FILES中的文件是还是不是有被手动删除

借使没有被删除 上面执行的代码功用:

概念数组$images $thunb_images $water_images 用来存放原图 缩略图 水印图

判定文件的格式 判断文件的轻重缓急

将图片从临时路径中改换来世代路径中

将图片新的门径保存到$images数组中

调用缩略图函数,然后将缩略图的路线存放在$thunb_images数组中

调用水印图函数,然后将水印图的不二法门存放在$water_images数组中

 

//处理修改中产品对应原图片的步子

判断$_POST[“ready_check_images”] 是或不是为空

原则: 不为空, 代表有原图则判断原图中是不是有图片被去除

假定原图被删去,

从文件夹中剔除原图 删除相应的水印图 删除相应的缩略图

万一原图没有被删除,

则将原图对应的路子存储在$images数组中

将缩略图对应的途径存储在$thumb_images数组中

将水印图对应的门径存储在$water_images数组中

 

为空,判断原图存在,代表将原图所有的图形全部去除

从文件夹中删去原图 删除相应的水印图 删除相应的缩略图

c:上述流程实施完事后,

将$images,数组转化为json格式的字符串 追加到$_POST[“images”]中

将$thumb_images,数组转化为json格式的字符串
追加到$_POST[“thumb_images”]中

将$water_images,数组转化为json格式的字符串
追加到$_POST[“water_images”]中

d:新增,新增成功跳转,新增败北,提醒错误消息

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有