图像格式转换程序






4.40/5 (15投票s)
.NET 提供了广泛的图像转换支持。任何图像都可以从一种格式转换为另一种格式。.NET 支持的最常见格式包括 .BMP、.EMF、.GIF、.ICO、.JPG、.PNG、.TIF 和 .WMF。

引言
通常,需要将上传的图像格式转换为另一种图像格式。我们通常允许用户上传任何常见的图像类型,例如 .jpg、.gif、.png 等,并将所有图像处理为单一格式 .jpg。.NET 提供了对此需求的广泛支持;任何图像都可以从一种格式转换为另一种格式。 .NET 支持的最常见格式包括 .BMP、.EMF、.GIF、.ICO、.JPG、.PNG、.TIF 和 .WMF。
Using the Code
在演示程序中,我在解决方案的根目录下放置了两个空白文件夹,一个用于保存原始图像,另一个用于保存转换后的图像。在 Default.aspx 页面上,有一个 FileUpload
控件,用户可以通过该控件上传 .JPG、.PNG 和 .BMP 类型的文件,还有一个 DropDownList
,用户必须从中选择结果图像格式。有一个按钮,单击该按钮将处理图像以转换格式,页面上有两个 Image
控件,分别分配了 ImageUrl
,第一个显示原始图像,第二个显示结果图像。
要使程序正常工作,首先需要添加三个命名空间,这些命名空间提供了使用类(如 ‘Path
’、‘Bitmap
’ 和 ‘ImageFormat
’)的权限。这些命名空间是
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;
负责处理图像的按钮处理函数如下所示
protected void btnResults_OnClick(object sender, EventArgs e)
{
if (Page.IsValid && fpImage.HasFile)
{
string tmpName = Guid.NewGuid().ToString();
fpImage.SaveAs(MapPath("~/Original Images/" +
tmpName + Path.GetExtension(fpImage.FileName)));
imgOriginal.ImageUrl = "~/Original Images/" +
tmpName + Path.GetExtension(fpImage.FileName);
lblOIF.Text = Path.GetExtension(fpImage.FileName).ToString().ToUpper();
Bitmap original_image = new Bitmap(fpImage.FileContent);
if (drpRIF.SelectedValue == "1")
{
original_image.Save(MapPath
("~/Converted Images/" + tmpName + ".jpg"), ImageFormat.Jpeg);
imgResult.ImageUrl = "~/Converted Images/" + tmpName + ".jpg";
}
else if (drpRIF.SelectedValue == "2")
{
original_image.Save(MapPath("~/Converted Images/" +
tmpName + ".png"), ImageFormat.Png);
imgResult.ImageUrl = "~/Converted Images/" + tmpName + ".png";
}
else if (drpRIF.SelectedValue == "3")
{
original_image.Save(MapPath("~/Converted Images/" +
tmpName + ".bmp"), ImageFormat.Bmp);
imgResult.ImageUrl = "~/Converted Images/" + tmpName + ".bmp";
}
lblRIF.Text = drpRIF.SelectedItem.Text;
if(original_image != null) original_image.Dispose();
}
}
在上面的处理函数中,首先我创建一个新的 GUID 并将其存储在临时变量中。原始图像现在已保存为 GUID 命名。此图像已分配给页面上的 Image
控件。
原始图像现在已收集到 Bitmap
类中。现在,在检查所需的结果图像格式后,Bitmap
中的图像将以结果图像格式保存,然后将新保存的图像分配给页面上的 Image
控件。
原始图像格式类型和结果图像格式类型都与页面上的图像一起显示。
值得思考的点
实际内容作为演示文件附带。您在查看下载文件时会很容易理解。图像处理操作需要大量的服务器资源,如果管理不当,可能会降低性能。在完成操作后,通过释放类(如 Bitmap
)的对象来释放资源非常重要。
您可能还会对以下我撰写的文章感兴趣
结束语
希望这些内容对您有所帮助。感谢您的阅读。祝您好运!