zoukankan
html css js c++ java
上传图片加水印
using
System;
using
System.Collections;
using
System.ComponentModel;
using
System.Data;
using
System.Drawing;
using
System.Web;
using
System.Web.SessionState;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Web.UI.HtmlControls;
using
System.IO;
namespace
MikeCat
{
/**/
///
<summary>
///
MikeCat_WaterMark 的摘要说明。
///
*******************************
///
作者:迈克老猫
///
功能:上传图片加入水印
///
EMAIL:mikecat#mikecat.net
///
*******************************
///
</summary>
public
class
MikeCat_WaterMark : System.Web.UI.Page
{
protected
System.Web.UI.WebControls.Button Button1;
protected
System.Web.UI.HtmlControls.HtmlInputFile File1;
protected
System.Web.UI.WebControls.Image Image1;
protected
System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator1;
protected
System.Web.UI.WebControls.Label Label1;
protected
System.Web.UI.WebControls.Button Button2;
private
void
Page_Load(
object
sender, System.EventArgs e)
{
//
在此处放置用户代码以初始化页面
if
(
!
Page.IsPostBack)
{
Image1.ImageUrl
=
"
mikepp.gif
"
;
}
}
Web 窗体设计器生成的代码
#region
Web 窗体设计器生成的代码
override
protected
void
OnInit(EventArgs e)
{
//
//
CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base
.OnInit(e);
}
/**/
///
<summary>
///
设计器支持所需的方法 - 不要使用代码编辑器修改
///
此方法的内容。
///
</summary>
private
void
InitializeComponent()
{
this
.Button1.Click
+=
new
System.EventHandler(
this
.Button1_Click);
this
.Button2.Click
+=
new
System.EventHandler(
this
.Button2_Click);
this
.Load
+=
new
System.EventHandler(
this
.Page_Load);
}
#endregion
private
void
Button1_Click(
object
sender, System.EventArgs e)
{
if
(File1.PostedFile.FileName.Trim()
!=
""
)
{
//
上传文件
string
extension
=
Path.GetExtension(File1.PostedFile.FileName).ToLower();
string
fileName
=
DateTime.Now.ToString(
"
yyyyMMddhhmmss
"
);
string
path
=
Server.MapPath(
"
.
"
)
+
"
/upload/
"
+
fileName
+
extension;
File1.PostedFile.SaveAs(path);
//
加文字水印,注意,这里的代码和以下加图片水印的代码不能共存
System.Drawing.Image image
=
System.Drawing.Image.FromFile(path);
Graphics g
=
Graphics.FromImage(image);
g.DrawImage(image,
0
,
0
, image.Width, image.Height);
Font f
=
new
Font(
"
Verdana
"
,
16
);
Brush b
=
new
SolidBrush(Color.Blue);
string
addText
=
"
老猫的理想http://www.mikecat.net
"
;
g.DrawString(addText, f, b,
10
,
10
);
g.Dispose();
//
保存加水印过后的图片,删除原始图片
string
newPath
=
Server.MapPath(
"
.
"
)
+
"
/upload/
"
+
fileName
+
"
_new
"
+
extension;
image.Save(newPath);
image.Dispose();
if
(File.Exists(path))
{
File.Delete(path);
}
Image1.ImageUrl
=
newPath;
//
Response.Redirect(newPath);
}
}
private
void
Button2_Click(
object
sender, System.EventArgs e)
{
//
上传文件
string
extension
=
Path.GetExtension(File1.PostedFile.FileName).ToUpper();
string
fileName
=
DateTime.Now.ToString(
"
yyyyMMddhhmmss
"
);
string
path
=
Server.MapPath(
"
.
"
)
+
"
/upload/
"
+
fileName
+
extension;
File1.PostedFile.SaveAs(path);
//
加图片水印
System.Drawing.Image image
=
System.Drawing.Image.FromFile(path);
System.Drawing.Image copyImage
=
System.Drawing.Image.FromFile( Server.MapPath(
"
.
"
)
+
"
/mikepp.gif
"
);
Graphics g
=
Graphics.FromImage(image);
g.DrawImage(copyImage,
new
Rectangle(image.Width
-
copyImage.Width, image.Height
-
copyImage.Height, copyImage.Width, copyImage.Height),
0
,
0
, copyImage.Width, copyImage.Height, GraphicsUnit.Pixel);
g.Dispose();
//
保存加水印过后的图片,删除原始图片
string
newPath
=
Server.MapPath(
"
.
"
)
+
"
/upload/
"
+
fileName
+
"
_new
"
+
extension;
image.Save(newPath);
image.Dispose();
if
(File.Exists(path))
{
File.Delete(path);
}
Image1.ImageUrl
=
newPath;
}
}
}
查看全文
相关阅读:
JAVA Shallow heap & Retained heap
JAVA-堆区,栈区,方法区。
Android经典的设计模式
Android 绘制view的小知识点
Android View的滑动 动画
Android开发aidl使用中linkToDeath和unlinkToDeath的使用
Android任务栈的运行规律
Android 通过httppost上传文本文件到服务器。
Android中的Libraries以及Order and Export的使用。
drawable微技巧以及layout的小知识
原文地址:https://www.cnblogs.com/adam/p/959895.html
最新文章
返回一个整数数组中最大子数组的和
viewpage+RadioButton+Fragment简单导航界面
Android应用第一次启动时的欢迎界面制作
SharedPreferences基础学习
利用js+ajax在jsp与servlet间进行简单数据交换
调用系统的拨打电话,不弹框或多次出现弹框问题
block的修饰词为什么选用copy
无限轮播图片的实现原理
为什么分类不能添加属性?
UIScrollerview的contentsize设置
热门文章
图片圆角处理
iOS 关于修饰代理用weak还是assign
IOS开发之——objectForKey与valueForKey在NSDictionary中的差异
iOS 循环轮播框架思路
两种单例模式的写法
Android 解析XML文件和生成XML文件
Android Studio 编译单个module
AndroidStudio安装流程 以及 使用过程中出现的异常
Android调用webservice的例子
Android 内存泄漏的一些情况。
Copyright © 2011-2022 走看看