asp.net中上传图片并生成小图片,自动添加水印的代码 .
asp.net中上传图片并生成小图片,自动添加水印的代码
/// 上传图片生成缩略图及水印 (来自:http://www.51aspx.com/CV/ImageUpload)protected void Button1_Click(object sender, EventArgs e)
{
if (FileUpload1.HasFile)
{
string fileContentType = FileUpload1.PostedFile.ContentType;
if (fileContentType == "image/bmp" ¦ ¦ fileContentType == "image/gif" ¦ ¦fileContentType == "image/pjpeg")
{
string name = FileUpload1.PostedFile.FileName; // 客户端文件路径FileInfo file = new FileInfo(name);
string fileName = file.Name; // 文件名称
string fileName_s = "x_" + file.Name; // 缩略图文件名称
string fileName_sy = "text_" + file.Name; // 水印图文件名称(文字)
string fileName_syp = "water_" + file.Name; // 水印图文件名称(图片)
string webFilePath = Server.MapPath("ImgUpload/" + fileName); // 服务器端文件路径
string webFilePath_s = Server.MapPath("ImgUpload/" + fileName_s); // 服务器端缩略图路径
string webFilePath_sy = Server.MapPath("ImgUpload/" + fileName_sy); // 服务器端带水印图路径(文字)
string webFilePath_syp = Server.MapPath("ImgUpload/" + fileName_syp); // 服务器端带水印图路径(图片)
string webFilePath_sypf = Server.MapPath("51aspx.png"); // 服务器端水印图路径(图片)if (!File.Exists(webFilePath))
{
try
{
FileUpload1.SaveAs(webFilePath); // 使用 SaveAs 方法保存文件
AddWater(webFilePath, webFilePath_sy);
AddWaterPic(webFilePath, webFilePath_syp, webFilePath_sypf);
MakeThumbnail(webFilePath, webFilePath_s, 130, 130, "Cut"); // 生成缩略图方法
Label1.Text = "提示:文件“" + fileName + "”成功上传,并生成“" + fileName_s + "” 缩略图,文件类型为:" + FileUpload1.PostedFile.ContentType + ",文件大小为:"+ FileUpload1.PostedFile.ContentLength + "B";
}
catch (Exception ex)
{
Label1.Text = "提示:文件上传失败,失败原因:" + ex.Message;
}
}
else
{
Label1.Text = "提示:文件已经存在,请重命名后上传";
}
}
else
{
Label1.Text = "提示:文件类型不符";
}
}
}修改 删除 举报 引用 回复
进入用户个人空间
加为好友
发送私信
在线聊天* shuiliner2880
*
* 等级:发表于:2008-05-23 09:03:486楼 得分:0
/**/
///
/// 生成缩略图
///
/// 源图路径(物理路径)
/// 缩略图路径(物理路径)
/// 缩略图宽度
/// 缩略图高度
/// 生成缩略图的方式
public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode)
{
System.Drawing.Image originalImage = System.Drawing.Image.FromFile(originalImagePath);int towidth = width;
int toheight = height;int x = 0;
int y = 0;
int ow = originalImage.Width;
int oh = originalImage.Height;switch (mode)
{
case "HW"://指定高宽缩放(可能变形)
break;
case "W"://指定宽,高按比例
toheight = originalImage.Height * width / originalImage.Width;
break;
case "H"://指定高,宽按比例
towidth = originalImage.Width * height / originalImage.Height;
break;
case "Cut"://指定高宽裁减(不变形)
if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight)
{
oh = originalImage.Height;
ow = originalImage.Height * towidth / toheight;
y = 0;
x = (originalImage.Width - ow) / 2;
}
else
{
ow = originalImage.Width;
oh = originalImage.Width * height / towidth;
x = 0;
y = (originalImage.Height - oh) / 2;
}
break;
default:
break;
}//新建一个bmp图片
System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth, toheight);//新建一个画板
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);//设置高质量插值法
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;//设置高质量,低速度呈现平滑程度
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;//清空画布并以透明背景色填充
g.Clear(System.Drawing.Color.Transparent);//在指定位置并且按指定大小绘制原图片的指定部分
g.DrawImage(originalImage, new System.Drawing.Rectangle(0, 0, towidth, toheight),
new System.Drawing.Rectangle(x, y, ow, oh),
System.Drawing.GraphicsUnit.Pixel);try
{
//以jpg格式保存缩略图
bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
}
catch (System.Exception e)
{
throw e;
}
finally
{
originalImage.Dispose();
bitmap.Dispose();
g.Dispose();
}
}/**/
///
/// 在图片上增加文字水印
///
/// 原服务器图片路径
/// 生成的带文字水印的图片路径
protected void AddWater(string Path, string Path_sy)
{
string addText = "51aspx.com";
System.Drawing.Image image = System.Drawing.Image.FromFile(Path);
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(image);
g.DrawImage(image, 0, 0, image.Width, image.Height);
System.Drawing.Font f = new System.Drawing.Font("Verdana", 60);
System.Drawing.Brush b = new System.Drawing.SolidBrush(System.Drawing.Color.Green);g.DrawString(addText, f, b, 35, 35);
g.Dispose();image.Save(Path_sy);
image.Dispose();
}/**/
///
/// 在图片上生成图片水印
///
/// 原服务器图片路径
/// 生成的带图片水印的图片路径
/// 水印图片路径
protected void AddWaterPic(string Path, string Path_syp, string Path_sypf)
{
System.Drawing.Image image = System.Drawing.Image.FromFile(Path);
System.Drawing.Image copyImage = System.Drawing.Image.FromFile(Path_sypf);
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(image);
g.DrawImage(copyImage, new System.Drawing.Rectangle(image.Width - copyImage.Width, image.Height - copyImage.Height, copyImage.Width, copyImage.Height), 0, 0, copyImage.Width, copyImage.Height, System.Drawing.GraphicsUnit.Pixel);
g.Dispose();image.Save(Path_syp);
image.Dispose();
}protected void Button2_Click(object sender, EventArgs e)
{
//自动保存远程图片
WebClient client = new WebClient();
//备用Reg:
Regex reg = new Regex("IMG[^>]*?src//s*=//s*(?:/"(? [^/"]*)/" ¦'(? [^/']*)')", RegexOptions.IgnoreCase);
MatchCollection m = reg.Matches(TextBox1.Text);foreach (Match math in m)
{
string imgUrl = math.Groups[1].Value;//在原图片名称前加YYMMDD重名名并上传
Regex regName = new Regex(@"/w+.(?:jpg ¦gif ¦bmp ¦png)", RegexOptions.IgnoreCase);
string strNewImgName = DateTime.Now.ToShortDateString().Replace("-", "") + regName.Match(imgUrl).ToString();
try
{
//保存图片
client.DownloadFile(imgUrl, Server.MapPath("ImgUpload/Auto/" + strNewImgName));}
catch
{
}
finally
{}
client.Dispose();
}Response.Write(" alert('远程图片保存成功,保存路径为ImgUpload/auto') ");
}
}
asp.net中上传图片并生成小图片,自动添加水印的代码 .相关推荐
- 在ASP.NET中上传图片并生成缩略图
在ASP.NET中上传图片并生成缩略图,可以参照下列代码: private void btnUploadPicture_Click(object sender, System.EventArgs e) ...
- java生成小图片_JAVA生成缩略小图片类
JAVA生成缩略小图片类 java.awt.image.BufferedImage是缓冲图片类主要将生成的图片对象缓冲起来:javax.imageio.ImageIO是图片IO控制类,可以将缓冲图片对 ...
- jQuery图片自动添加水印插件
JS脚本(jQuery)为图片加水印效果预览: http://hovertree.com/texiao/jquery/94/ 本功能使用HTML5实现,可为图片加上文字水印,可设置文字,设置颜色,位置 ...
- java web 生成验证码_Javaweb开发中通过Servlet生成验证码图片
一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下: 创建一个DrawImage Servlet,用来生成验证码图片 package gacl.res ...
- java与python两个小人动图_CSS Sprite小图片自动合并工具(NodeJS,Python,Java,Ruby)
注* 基于Node.JS的图片合并工具还有一些,但大多依赖第三方图像处理库,此处略. /*配置输出的大图片地址.排列方向,间隔等*/ /** sprite: mysprite; sprite-imag ...
- 利用Asp.net中的AJAX制作网页上自动选取开始日期及结束日期的用户自定义控件...
前段时间用过一个酒店入住预约网站,当你点击"入住时间"时会悬浮出一对并列的日历,然后点击左边的日历就能选择入住时间,点击右侧的日历就能自动得到离店时间,当时没有太留意是怎么实现的, ...
- ASP.NET 中验证的自定义返回和统一社会信用代码的内置验证实现
目录 项目演示 创建项目 创建用户注册信息接收类 创建测试 Controller 执行测试 统一错误返回 自定义验证规则 验证规则介绍 编码实现 最后 References 本文介绍 ASP.NET ...
- 小程序中 使用canvas 生成推广图片——wepy框架
现在小程序不能直接分享到朋友圈,所以另辟蹊径的有了生成 '推广图' 让用户分享到朋友圈的方式就出来了.使用canvas 进行绘图的时候 主要用了 ctx.drawImage() API进行绘画,但是c ...
- 在Asp.Net中从sqlserver检索(retrieve)图片
介绍: 这篇文章是我写的"如何把图片存入sqlServer中"的后续.我建议你在读这篇文章之前先看看那篇. 和存储图片相比,读取图片就要简单多了.输出一副图片我们要做的就是使用Re ...
最新文章
- L - Oil Deposits HDU - 1241
- 关于 Ruby Ruby on Rails 的一些书及论坛网站
- 本地数据源:使用firebird数据库
- 决策树:特征分布空间划分方法
- 特权级概述(哥子就想知道CPU是如何验证特权级的)GATE+TSS
- java帐篷_Java多线程之 Park和Unpark(十四)
- snmp,mrtg安装和配置(2) mrtg安装
- 【Pygame实战】怀旧经典—这款给娃的棋类游戏,你还记得叫什么吧?(一定要收藏)
- npm 清理缓存命令 【最新的】
- 本机号码校验不只是免输密码、免输短信验证码
- 求定积分的不太常见的方法
- 干货:教你如何玩转信息流广告投放,整套信息流精准定向投放攻略!
- 一名IT界“老”技术人关于学习与成长的分享,受益!
- C++对象模型-在对象模型的尖端 第七章笔记
- KaTex的一个简单例子
- python基础教程:易忽视知识点小结
- P1015 [NOIP1999 普及组] 回文数 C语言实现
- Easyx-----c语言实现斗兽棋
- GPFS 之 Quorum 深入解析
- 图片隐写神器Stegsolve安装教程