0

0

PHP:上传图像程序,为图像加水印

php中文网

php中文网

发布时间:2016-06-21 09:05:38

|

1338人浏览过

|

来源于php中文网

原创

程序|上传

$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="lengshuye.3322.org";  //水印字符串
$waterimg="xplore.gif";    //水印图片
$imgpreview=1;      //是否生成预览图(1为生成,其他为不生成);
$imgpreviewsize=1/2;    //缩略图比例
?>


lengshuye.3322.org



  上传文件:
 
 

  允许上传的文件类型为:=implode(', ',$uptypes)?> //implode将数组元素用“,”分开

if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
 if (!is_uploaded_file($_FILES["upfile"]["tmp_name"])) //is_uploaded_file判断文件是否是通过 HTTP POST 上传的
 //是否存在文件
 { 
  echo "图片不存在!";
  exit;
 }
 
    $file = $_FILES["upfile"];
   if($max_file_size    //检查文件大小
   {
    echo "文件太大!";
    exit;
   }

 if(!in_array($file["type"], $uptypes))  //in_array -- 检查数组中是否存在某个值
 //检查文件类型
 {
    echo "文件类型不符!".$file["type"];
    exit; 
 }
 
 if(!file_exists($destination_folder))  //file_exists -- 检查文件或目录是否存在
  mkdir($destination_folder);
 
 $filename=$file["tmp_name"];
 $image_size = getimagesize($filename); 
 $pinfo=pathinfo($file["name"]);//pathinfo -- 返回文件路径的信息
 $ftype=$pinfo["extension"];//extension表示后缀,例如:gif jpg
 $destination = $destination_folder.time().".".$ftype;
 if (file_exists($destination) && $overwrite != true)
 {
            echo "同名文件已经存在了";
            exit;
    }
   
    if(!move_uploaded_file ($filename, $destination))//move_uploaded_file -- 将上传的文件移动到新位置
    {
       echo "移动文件出错";
            exit;
    }

 $pinfo=pathinfo($destination);
 $fname=$pinfo["basename"];
 echo " 已经成功上传
文件名:  ".$destination_folder.$fname."
";
 echo " 宽度:".$image_size[0];
 echo " 长度:".$image_size[1];
 echo "
大小:".$file["size"]." bytes";

 if($watermark==1)
 {
  $iinfo=getimagesize($destination,$iinfo);
  $nimage=imagecreatetruecolor($image_size[0],$image_size[1]);//imagecreatetruecolor -- 新建一个真彩色图像
  $white=imagecolorallocate($nimage,255,255,255);//imagecolorallocate -- 为一幅图像分配颜色
  $black=imagecolorallocate($nimage,0,0,0);
  $red=imagecolorallocate($nimage,255,0,0);
  imagefill($nimage,0,0,$white);//imagefill -- 区域填充
  switch ($iinfo[2])
  {
   case 1:
    $simage =imagecreatefromgif($destination);//gif
    break;
   case 2:
    $simage =imagecreatefromjpeg($destination);//jpg
    break;
   case 3:
    $simage =imagecreatefrompng($destination);//png
    break;
   case 6:
    $simage =imagecreatefromwbmp($destination);//bmp
    break;
   default:
    die("不支持的文件类型");
    exit;
  }
 
  imagecopy($nimage,$simage,0,0,0,0,$image_size[0],$image_size[1]);//imagecopy -- 拷贝图像的一部分
  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);//imagedestroy($simage1) 释放与 $simage1 关联的内存,销毁图像
    break;
  } 
 
  switch ($iinfo[2])
  {
   case 1:
    //imagegif($nimage, $destination);
    imagejpeg($nimage, $destination);//imagejpeg -- 以 JPEG 格式将图像输出到浏览器或文件
    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 "
图片预览:
";
  echo "\"图片预览:\r文件名:".$destination."\r上传时间:\"";
 }
}
?>



PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
微信文件过期恢复教程
微信文件过期恢复教程

本专题整合了微信文件过期恢复方法、技巧教程,阅读专题下面的文章了解更多详细内容。

0

2026.02.04

抖音网页版入口与视频观看指南 抖音官网视频在线访问
抖音网页版入口与视频观看指南 抖音官网视频在线访问

本专题汇总了抖音网页版的入口链接、官方登录页面以及视频观看入口,帮助用户快速访问抖音网页版,提供免登录访问方式和直接进入视频播放页面的方法,确保顺利浏览和观看抖音视频。

63

2026.02.04

学习通网页版入口与在线学习指南 学习通官网登录与使用方法
学习通网页版入口与在线学习指南 学习通官网登录与使用方法

本专题详细汇总了学习通网页版入口与登录方法,提供学习通官方网页端入口、学生登录平台、网页版使用指南等内容,帮助用户快速稳定地登录学习通官网,顺利进入学习平台,提升学习效率和体验。

9

2026.02.04

Python Web 框架 Django 深度开发
Python Web 框架 Django 深度开发

本专题系统讲解 Python Django 框架的核心功能与进阶开发技巧,包括 Django 项目结构、数据库模型与迁移、视图与模板渲染、表单与认证管理、RESTful API 开发、Django 中间件与缓存优化、部署与性能调优。通过实战案例,帮助学习者掌握 使用 Django 快速构建功能全面的 Web 应用与全栈开发能力。

9

2026.02.04

Java 流式处理与 Apache Kafka 实战
Java 流式处理与 Apache Kafka 实战

本专题专注讲解 Java 在流式数据处理与消息队列系统中的应用,系统讲解 Apache Kafka 的基础概念、生产者与消费者模型、Kafka Streams 与 KSQL 流式处理框架、实时数据分析与监控,结合实际业务场景,帮助开发者构建 高吞吐量、低延迟的实时数据流管道,实现高效的数据流转与处理。

3

2026.02.04

Golang 容器化与 Docker 实战
Golang 容器化与 Docker 实战

本专题深入讲解 Golang 应用的容器化与 Docker 部署,涵盖 Docker 基础概念、容器构建与镜像管理、Go 应用的 Dockerfile 编写、跨平台容器部署与优化、Docker Compose 和 Kubernetes 部署工具。通过实际案例,帮助学习者掌握 如何将 Golang 应用容器化并实现高效部署与管理,提升系统的可扩展性与运维效率。

3

2026.02.04

全国统一发票查询平台入口合集
全国统一发票查询平台入口合集

本专题整合了全国统一发票查询入口地址合集,阅读专题下面的文章了解更多详细入口。

59

2026.02.03

短剧入口地址汇总
短剧入口地址汇总

本专题整合了短剧app推荐平台,阅读专题下面的文章了解更多详细入口。

110

2026.02.03

植物大战僵尸版本入口地址汇总
植物大战僵尸版本入口地址汇总

本专题整合了植物大战僵尸版本入口地址汇总,前往文章中寻找想要的答案。

56

2026.02.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号