求asp.net上传图片并同时生成缩略图的代码啊
求asp.net上传图片并同时生成缩略图的代码啊希望各位发的不仅仅是CS代码,还有HTML的代码. --------------------编程问答-------------------- 我学 的是C#的,最好是C#的,如果是VB的,我也学学.
谢谢拉! --------------------编程问答-------------------- 缩略图可以动态生成.不用上传的时候再生成个缩略图保存.
参考VS 2005 帮助.即有缩略图源码.学习GDI+,即可任意操作图片. --------------------编程问答-------------------- 路过 --------------------编程问答-------------------- 支持!!! --------------------编程问答-------------------- 关注 --------------------编程问答-------------------- using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Net;
using System.Text.RegularExpressions;
--------------------编程问答-------------------- namespace _51aspxImgUpload
{
/// <summary>
/// 上传图片生成缩略图及水印 (来自:http://www.51aspx.com/CV/ImageUpload)
/// </summary>
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
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 = "提示:文件类型不符";
}
}
} --------------------编程问答--------------------
/**/
/// <summary>
/// 生成缩略图
/// </summary>
/// <param name="originalImagePath">源图路径(物理路径)</param>
/// <param name="thumbnailPath">缩略图路径(物理路径)</param>
/// <param name="width">缩略图宽度</param>
/// <param name="height">缩略图高度</param>
/// <param name="mode">生成缩略图的方式</param>
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();
}
}
/**/
/// <summary>
/// 在图片上增加文字水印
/// </summary>
/// <param name="Path">原服务器图片路径</param>
/// <param name="Path_sy">生成的带文字水印的图片路径</param>
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();
}
/**/
/// <summary>
/// 在图片上生成图片水印
/// </summary>
/// <param name="Path">原服务器图片路径</param>
/// <param name="Path_syp">生成的带图片水印的图片路径</param>
/// <param name="Path_sypf">水印图片路径</param>
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:<img.*?src=([\"\'])(http:\/\/.+\.(jpg|gif|bmp|bnp))\1.*?>
Regex reg = new Regex("IMG[^>]*?src\\s*=\\s*(?:\"(?<1>[^\"]*)\"|'(?<1>[^\']*)')", 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("<script>alert('远程图片保存成功,保存路径为ImgUpload/auto')</script>");
}
}
}
--------------------编程问答-------------------- mark
--------------------编程问答-------------------- 收藏 --------------------编程问答-------------------- 学习
--------------------编程问答-------------------- 去我的博客看看吧,详尽的回答! --------------------编程问答--------------------
'----------------------上传图片
Imports System
Imports System.Data
Imports System.Configuration
Imports System.Web
Imports System.Web.Security
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts
Imports System.Web.UI.HtmlControls
'--------------------数据库连接
Imports System.Drawing
Imports System.Drawing.Imaging
Imports System.Drawing.Drawing2D
Imports System.Data.SqlClient
Imports System.Math
Dim imgsavepath As String '----------原图片路径
Dim imgsltpath As String '----------缩略图片路径
Dim sss As String = "**"
‘上传图片并生成缩略图保存到文件夹 ,经过试验 是成功的 不过是VB的代码
Dim image, newimage As System.Drawing.Image
Dim width, height, newwidth, newheight As Integer
Dim callb As System.Drawing.Image.GetThumbnailImageAbort
If imgsavepath <> "" Then System.IO.File.Delete(System.Web.HttpContext.Current.Server.MapPath(imgsavepath))
Dim uploadname As String = inputfile.Value '获取待上传图片的完整路径,包括文件名
Dim imagename As String = "" '上传后的图片名,以当前时间为文件名,确保文件名没有重复
' Dim filetext As String = LCase(Right(Trim(inputfile.Value), 3))
' Dim filetext1 As String = LCase(Right(Trim(inputfile.Value), 4))
If inputfile.Value <> "" Then
Dim stuff As String = uploadname.Substring(uploadname.LastIndexOf(".") + 1) '获得上传的图片的后缀名
If stuff = "gif" Or stuff = "jpg" Or stuff = "jpeg" Or stuff = "bmp" Then
imagename = DateTime.Now.Ticks.ToString + "." + stuff
inputfile.PostedFile.SaveAs(Server.MapPath("userimages/") + imagename)
imgsavepath = Server.MapPath("userimages/") + imagename
'--缩略图
image = System.Drawing.Image.FromFile(imgsavepath)
width = image.Width
height = image.Height
If width > height Then
newwidth = 125
newheight = image.Height / image.Width * newwidth
Else
newheight = 104
newwidth = image.Width / image.Height * newheight
End If
newimage = image.GetThumbnailImage(newwidth, newheight, callb, New System.IntPtr())
newimage.Save(Server.MapPath("userimages/suolvetu/" + imagename))
imgsltpath = "userimages/suolvetu/" + imagename
image.Dispose()
'-------------------------
imgtou.ImageUrl = imgsltpath 'Server.MapPath("userimages/suolvetu/" + imagename)
response.write sss & "成功上传图片"
Response.Write(imgsavepath)
Response.Write("<br/>")
Response.Write(inputfile.Value)
Else
response.write sss & "请选择正确格式的图片"
Exit Sub
End If
Else
response.write sss & "请选择上传的图片"
Exit Sub
End If
--------------------编程问答-------------------- 若要保存到数据库:
<asp:Image ID="imgtou" Height="104px" Width="100px" runat ="server" ImageAlign ="AbsMiddle" ImageUrl ="~/sysimage/01.gif" />
<input id="inputfile" type ="file" runat ="server" style="width: 208px" />
<asp:Button ID="shangch" runat="server" Text="上传" Width="39px" Enabled="False" />
--------------------编程问答-------------------- 发布之后正确吗 你看看 有可能路径那里出问题 --------------------编程问答--------------------
cmd = New SqlCommand("INSERT INTO 用户表(原图,缩略图) VALUES('" & imgsavepath.Trim & "','" & imgsltpath.trim & "')", conn)
cmd.ExecuteNonQuery()
其他字段自己加
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="UploadModifyImg.aspx.cs" Inherits="register_UploadModifyImg" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title></title>
<script type="text/javascript">
function upload() {
var button = document.getElementById("Button1");
button.click();
}
</script>
</head>
<body>
<form id="form1" runat="server">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td id="myimg" style="text-align: center; width: 113px;">
<img alt="图片不能大于512K" id="photoshow" src="../images/photo.gif" width="113" height="129"
runat="server" style="padding-top: 0px" />
</td>
</tr>
<tr>
<td>
<input id="Photo" type="file" onchange="upload()" runat="server" style="width: 112px" />
</td>
</tr>
</table>
<span id="photo_span" style="color: Red;"></span>
<asp:Button ID="Button1" runat="server" Style="display: none" Text="Button" OnClick="Button1_Click" />
</form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class register_UploadImg : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
}
}
protected void Button1_Click(object sender, EventArgs e)
{
HttpPostedFile file = Request.Files[0];
if (!isAllowdPictureType(file))
{
this.ClientScript.RegisterStartupScript(this.GetType(), string.Empty, "alert('上传文件格式不正确!');", true);
return;
}
else if (file.ContentLength > 500000)
{
this.ClientScript.RegisterStartupScript(this.GetType(), string.Empty, "alert('上传文件大小超过500K!');", true);
return;
}
else
{
string tempPicNum = Utility.CommonUtility.MakeGuid() + ".jpg";
Photo.PostedFile.SaveAs(Server.MapPath("temp/" + tempPicNum));
photoshow.Src = "../register/temp/" + tempPicNum;
Session["pic"] = file;
}
}
private bool isAllowdPictureType(HttpPostedFile file)
{
if (string.IsNullOrEmpty(file.FileName))
{
return true;
}
string suffix = file.FileName.Substring(file.FileName.LastIndexOf('.') + 1).ToLower();
string[] allowedSuffix = { "jpg", "bmp", "png", "jpeg", "gif" };
bool allowed = false;
foreach (string item in allowedSuffix)
{
if (object.Equals(item, suffix))
{
allowed = true;
break;
}
}
return allowed;
}
}
以上页面为UploadImg.aspx,如果你要做一个无刷新的,你就在另一个页面 <iframe src="UploadImg.aspx" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" tabindex="50" style="width: 113px; " ></iframe>
--------------------编程问答--------------------
#region 上傳
protected void btnUp_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(imageUpload.PostedFile.FileName))
{
myscript = @"alert('對不起,請選擇要上傳的文件')";
Page.ClientScript.RegisterStartupScript(this.GetType(), "MyScript", myscript, true);
}
string xfilename = "X" + DateTime.Now.ToString("yyyyMMddhhmmss");
string dfilename = "D" + DateTime.Now.ToString("yyyyMMddhhmmss");
string filePath = imageUpload.PostedFile.FileName;
string fileEx = filePath.Substring(filePath.LastIndexOf(".") + 1);
string serverpath1 = Server.MapPath(@"uploadpic\") + xfilename + "." + fileEx;
string serverpath2 = Server.MapPath(@"uploadpic\") + dfilename + "." + fileEx;
//判斷圖片格式
if (fileEx == "jpg" || fileEx == "bmp" || fileEx == "gif" || fileEx == "jpeg")
{
System.Drawing.Image image, newimage;
//保存大圖
imageUpload.SaveAs(serverpath2);
//生成略圖
image = System.Drawing.Image.FromFile(serverpath2);
System.Drawing.Image.GetThumbnailImageAbort callb = null;
newimage = image.GetThumbnailImage(100, 80, callb, new System.IntPtr());
//把略圖保存到指定的虛擬路徑
newimage.Save(serverpath1);
//釋放image對象佔用資源
image.Dispose();
newimage.Dispose();
lblImage.Text = "<img src='uploadpic/" + xfilename + "." + fileEx + "' width='140' height='110'/>";
lblImgurl.Text = xfilename + "." + fileEx;
}
else
{
myscript = @"alert('對不起,圖片格式不正確')";
Page.ClientScript.RegisterStartupScript(this.GetType(), "MyScript", myscript, true);
}
}
#endregion --------------------编程问答-------------------- 这是很久前的代码了 --------------------编程问答-------------------- 用缩略图组件吧 www.wave12.com
补充:.NET技术 , ASP.NET