指定图片格式保存


使用Image.Save方法可以保存图片。保存图片时通过指定ImageFormat对象,可以指定保存图片的形式。


ImageFormat 的成员有:Bmp(位图图像格式)、Emf(增强型图元文件图像格式)、Exif(可交换图像文件格式)、Gif(图形交换形式图像格式)、 Icon(Windows图标图像格式)、Jpeg(联合图像专家组图像格式)、MemoryBmp(内存位图图像格式)、Png(W3C可移植网络图形图像格式)、Tiff(标记图像文件格式图像格式)、Wmf(Windows 图园文件图像格式)。


但是在.NET Framework1.1版本时,只能保存为Bmp、Jpeg、Gif、Tiff、Png的格式,以Wmf、Emf、Icon格式保存时,其实是以Png格式保存。详细说明请参考微软的帮助和支持的「The Image.Save method does not save the file as the selected file type in Visual Basic .NET or in Visual Basic 2005」。


下面的代码是,读取”C:\\test.bmp”以PNG形式保存。


 [VB.NET]


 ’图像作成
 Dim bmp As New Bitmap(“C:\test.bmp”)


 ’以PNG形式保存
 bmp.Save(“C:\test.png”, System.Drawing.Imaging.ImageFormat.Png)


 ’释放资源
 bmp.Dispose()



 [C#]


 //图像作成
 Bitmap bmp = new Bitmap(“C:\\test.bmp”);


 //以PNG形式保存
 bmp.Save(“C:\\test.png”, System.Drawing.Imaging.ImageFormat.Png);


 //释放资源
 bmp.Dispose();


以图标的形式保存


Image对象以图标形式保存时,可以使用Icon.Save方法实现。


 [VB.NET]


 ’保存为图标的文件名
 Dim iconFile As String = “C:\test.ico”
 
 ’Bitmap作成
 Dim bmp As New Bitmap(32, 32)
 ’描绘图形
 Dim g As Graphics = Graphics.FromImage(bmp)
 g.FillEllipse(Brushes.Red, 1, 1, 30, 30)
 g.Dispose()
 
 ’把Bitmap作成Icon
 Dim ico As Icon = System.Drawing.Icon.FromHandle(bmp.GetHicon())
 
 ’写入
 Dim fs As New System.IO.FileStream(iconFile, _
     System.IO.FileMode.Create, System.IO.FileAccess.Write)
 ico.Save(fs)
 fs.Close()
 
 ’释放资源
 ico.Dispose()
 bmp.Dispose()  



 [C#]


 //保存为图标的文件名
 string iconFile = “C:\\test.ico”;
 
 //Bitmap作成
 Bitmap bmp = new Bitmap(32, 32);
 //描绘图形
 Graphics g = Graphics.FromImage(bmp);
 g.FillEllipse(Brushes.Red, 1, 1, 30, 30);
 g.Dispose();
 
 //把Bitmap作成Icon
 Icon ico = System.Drawing.Icon.FromHandle(bmp.GetHicon());
 
 //写入
 System.IO.FileStream fs = new System.IO.FileStream(
     iconFile, System.IO.FileMode.Create, System.IO.FileAccess.Write);
 ico.Save(fs);
 fs.Close();
 
 //释放资源
 ico.Dispose();
 bmp.Dispose();  


以增强型图元文件图像格式保存


代码如下所示。


 [VB.NET]


 Dim fileName As String = “C:\test.emf”
 
 ’Metafile对象作成
 Dim bmp As New Bitmap(1, 1)
 Dim bmpg As Graphics = Graphics.FromImage(bmp)
 Dim hdc As IntPtr = bmpg.GetHdc()
 Dim meta As New System.Drawing.Imaging.Metafile( _
     fileName, hdc, System.Drawing.Imaging.EmfType.EmfOnly)
 bmpg.ReleaseHdc(hdc)
 
 ’向Metafile描绘
 Dim emfg As Graphics = Graphics.FromImage(meta)
 emfg.FillEllipse(Brushes.Red, 0, 0, 100, 100)
 emfg.Dispose()
 
 ’释放资源
 meta.Dispose()
 bmpg.Dispose()
 bmp.Dispose()  



 [C#]


 string fileName = “C:\\test.emf”;
 
 // Metafile对象作成
 Bitmap bmp = new Bitmap(1, 1);
 Graphics bmpg = Graphics.FromImage(bmp);
 IntPtr hdc = bmpg.GetHdc();
 System.Drawing.Imaging.Metafile meta =
     new System.Drawing.Imaging.Metafile(
         fileName,
         hdc,
         System.Drawing.Imaging.EmfType.EmfOnly);
 bmpg.ReleaseHdc(hdc);
 
 //向Metafile描绘
 Graphics emfg = Graphics.FromImage(meta);
 emfg.FillEllipse(Brushes.Red, 0, 0, 100, 100);
 emfg.Dispose();
 
 //释放资源
 meta.Dispose();
 bmpg.Dispose();
 bmp.Dispose();
 


 

历史博文

标签:, ,
十一月 12, 2009 at 6:44 下午 by yippee 120 次
Category: Info
Tags: , ,