如何JPG,位图格式的图像转换成矢量格式在C#

我尝试将JPG图像转换成矢量format.I尝试实现这个代码,但它是通过exeception

public void Run() { Control c = new Control(); Graphics grfx = c.CreateGraphics(); //ReadImage(ImageName) method return the Image to Byte Array MemoryStream ms = new MemoryStream(ReadImage(@"E:\Temp\1.jpg")); IntPtr ipHdc = grfx.GetHdc(); Metafile mf = new Metafile(ms,ipHdc); grfx.ReleaseHdc(ipHdc); grfx.Dispose(); grfx = Graphics.FromImage(mf); mf.Save(@"E:\Temp\file.wmf", ImageFormat.Wmf);//Get Exception on this line grfx.Dispose(); }

Exeception是:在GDI发生一般性错误+请验证我的代码,我做了错误。 提前致谢

--------------解决方案-------------

该代码不能工作:据我所知的Metafile的构造预期已经包含了一些图元文件数据流(即一个“.wmf'-文件)或为空(新图元文件)

您应该创建一个新的图元文件,从中创建一个图形上下文,JPEG图像加载到一个单独的Image对象,并绘制在图元文件内容。 然后,你可以保存图元文件为“.WMF”文件。

我不这样做我自己,但我发现在CodeProject上的文章,其中介绍了许多关于图元文件创建(技巧)的详细信息。

但是请注意,这不是一个“真实”位图矢量的转换。 它只是嵌入位图到一个“.wmf的”容器。 如果你试图调整其大小,例如,你会得到相同的结果作为原始的JPEG图像(即没有“平稳”缩放)。

我得到了同样的错误之前在我的应用程序发生问题becouse文件写入到磁盘,以便您的

E:\Temp\file.wmf

检查文件权限写! 我的目录被映射在网络内存,所以我不得不目录中通和username.Make确保父目录存在连接并确保路径包括文件名和extension.if其无法正常工作尝试运行程序作为管理员

public string Main(Bitmap image)
{
string str = "";
try
{

int width = image.Width;
int height = image.Height;

Graphics offScreenBufferGraphics;
Metafile m;
using (MemoryStream stream = new MemoryStream())
{
using (offScreenBufferGraphics = Graphics.FromImage(image))
{
IntPtr deviceContextHandle = offScreenBufferGraphics.GetHdc();
m = new Metafile(
stream,
deviceContextHandle,
new RectangleF(0, 0, width, height),
MetafileFrameUnit.Pixel,
EmfType.EmfPlusOnly);
offScreenBufferGraphics.ReleaseHdc();
}
}

using (Graphics g = Graphics.FromImage(m))
{
// Set everything to high quality and Draw image
g.SmoothingMode = SmoothingMode.HighQuality;
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.PixelOffsetMode = PixelOffsetMode.HighQuality;
g.CompositingQuality = CompositingQuality.HighQuality;
MetafileHeader metafileHeader = m.GetMetafileHeader();
g.ScaleTransform(
metafileHeader.DpiX / g.DpiX,
metafileHeader.DpiY / g.DpiY);
g.PageUnit = GraphicsUnit.Pixel;
g.SetClip(new RectangleF(0, 0, width, height));
Point ulCorner = new Point(0, 0);
g.DrawImage(image, 0, 0, width, height);

}

// Get a handle to the metafile
IntPtr iptrMetafileHandle = m.GetHenhmetafile();

// Export metafile to an image file
CopyEnhMetaFile(iptrMetafileHandle, @"c:\\Ginko-Bilobatest1234.wmf");
str = "wmf image successfully generated.";
}
catch (Exception ex)
{
str = ex.InnerException + ex.Message;
}
return str;
// Delete the metafile from memory
// DeleteEnhMetaFile(iptrMetafileHandle);
}

分类:C# 时间:2015-03-15 人气:0
本文关键词: 图像,WMF,图元文件
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.769 (s). 10 q(s)