求asp.net上传图片并同时生成缩略图的代码啊

gety2008 2007-02-24 11:46:11
求asp.net上传图片并同时生成缩略图的代码啊
希望各位发的不仅仅是CS代码,还有HTML的代码.
...全文
989 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
yinxiaoyan112 2010-09-14
  • 打赏
  • 举报
回复
用缩略图组件吧 www.wave12.com
阿彪兄 2010-09-13
  • 打赏
  • 举报
回复
这是很久前的代码了
阿彪兄 2010-09-13
  • 打赏
  • 举报
回复

#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
cl47673250 2010-09-13
  • 打赏
  • 举报
回复
<%@ 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>
JiaJiaHappyForever 2010-09-13
  • 打赏
  • 举报
回复
发布之后正确吗 你看看 有可能路径那里出问题
zhu314746943 2010-09-13
  • 打赏
  • 举报
回复
若要保存到数据库:

cmd = New SqlCommand("INSERT INTO 用户表(原图,缩略图) VALUES('" & imgsavepath.Trim & "','" & imgsltpath.trim & "')", conn)
cmd.ExecuteNonQuery()
其他字段自己加
zhu314746943 2010-09-13
  • 打赏
  • 举报
回复

'----------------------上传图片
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" />
码上有钱了 2007-06-22
  • 打赏
  • 举报
回复
去我的博客看看吧,详尽的回答!
chiyustar 2007-06-22
  • 打赏
  • 举报
回复
学习
greatqn 2007-06-22
  • 打赏
  • 举报
回复
收藏
klmy 2007-06-14
  • 打赏
  • 举报
回复
mark
dcan 2007-06-14
  • 打赏
  • 举报
回复

/**/
/// <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>");

}
}
}
dcan 2007-06-14
  • 打赏
  • 举报
回复
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 = "提示:文件类型不符";
}
}
}
dcan 2007-06-14
  • 打赏
  • 举报
回复
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;

weiyong922 2007-02-25
  • 打赏
  • 举报
回复
关注
我爱程序 2007-02-25
  • 打赏
  • 举报
回复
支持!!!
nyzfl 2007-02-25
  • 打赏
  • 举报
回复
路过
xie_yanke 2007-02-25
  • 打赏
  • 举报
回复
缩略图可以动态生成.不用上传的时候再生成个缩略图保存.

参考VS 2005 帮助.即有缩略图源码.学习GDI+,即可任意操作图片.
gety2008 2007-02-24
  • 打赏
  • 举报
回复
我学 的是C#的,最好是C#的,如果是VB的,我也学学.
谢谢拉!
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧