【发布时间】:2012-02-24 03:09:12
【问题描述】:
这是我第一次处理图像问题,我被卡住了!!
我目前正在处理一个需要满足以下要求的 aspx 页面...
- 用户可以使用文件上传控件上传照片..
- 通过添加文字等来编辑照片...
- 在同一页面中显示新图像..
目前,我能够从文件上传器获取图像并显示.. 我也可以编辑图像...但我不知道如何在同一页面中显示它...
这与将图像保存到响应输出流有关.. 我只是不知道如何在这里工作......
它将所谓的导航到另一个页面...
请帮忙!! :( :(
下面是页面...
<div id="page">
<asp:Panel ID="pnlUpload" runat="server">
<asp:FileUpload ID="Upload" runat="server" />
<asp:Button ID="btnUpload" runat="server" OnClick="btnUpload_Click" Text="Upload" />
<br />
<asp:Label ID="lblError" runat="server" Visible="false" />
</asp:Panel>
<br />
<br />
<asp:Panel ID="pnlCrop" runat="server" Visible="false">
<asp:Image ID="imgCrop" runat="server" />
</asp:Panel>
<br />
<br />
<asp:Panel ID="pnlCropped" runat="server" Visible="false">
<asp:Image ID="newImg" runat="server" />
</asp:Panel>
<br />
</div>
下面是代码
protected void btnUpload_Click(object sender, EventArgs e)
{
Boolean FileOK = false;
Boolean FileSaved = false;
if (Upload.HasFile)
{
Session["WorkingImage"] = Upload.FileName;
String FileExtension = Path.GetExtension(Session["WorkingImage"].ToString()).ToLower();
String[] allowedExtensions = { ".png", ".jpeg", ".jpg", ".gif" };
for (int i = 0; i < allowedExtensions.Length; i++)
{
if (FileExtension == allowedExtensions[i])
{
FileOK = true;
}
}
}
if (FileOK)
{
try
{
Upload.PostedFile.SaveAs(path + Session["WorkingImage"]);
FileSaved = true;
}
catch (Exception ex)
{
lblError.Text = "File could not be uploaded." + ex.Message.ToString();
lblError.Visible = true;
FileSaved = false;
}
}
else
{
lblError.Text = "Cannot accept files of this type.";
lblError.Visible = true;
}
if (FileSaved)
{
pnlUpload.Visible = true;
pnlCrop.Visible = true;
imgCrop.ImageUrl = "images/" + Session["WorkingImage"].ToString();
//set the width and height of image
imgCrop.Width = 350;
imgCrop.Height = 280;
//load the image to be written on
Bitmap bitMapImage = new System.Drawing.Bitmap(Server.MapPath("images/" + Session["WorkingImage"].ToString()));
Graphics graphicImage = Graphics.FromImage(bitMapImage);
//smooth graphic is nice
graphicImage.SmoothingMode = SmoothingMode.AntiAlias;
//
graphicImage.DrawArc(new Pen(Color.Red, 3), 90, 235, 150, 50, 0, 360);
//write text
graphicImage.DrawString("Card number", new Font("Lucida Console", 10, FontStyle.Bold), SystemBrushes.WindowText, new Point(100, 250));
//set content type
Response.ContentType = "image/jpeg";
//save new image to response output stream
bitMapImage.Save(Response.OutputStream, ImageFormat.Jpeg);
//clean up
graphicImage.Dispose();
bitMapImage.Dispose();
}
【问题讨论】: