指定图片格式保存
使用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();
标签:bmp, c++, save