65.9K
CodeProject 正在变化。 阅读更多。
Home

图像格式转换程序

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.40/5 (15投票s)

2010 年 3 月 23 日

CPOL

2分钟阅读

viewsIcon

49174

downloadIcon

1991

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

snapshot.jpg

引言

通常,需要将上传的图像格式转换为另一种图像格式。我们通常允许用户上传任何常见的图像类型,例如 .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)的对象来释放资源非常重要。

您可能还会对以下我撰写的文章感兴趣

结束语

希望这些内容对您有所帮助。感谢您的阅读。祝您好运!

© . All rights reserved.