我正在尝试将我的gif / png图像转换为jpeg然后我想通过 这些图像到sqldatabase。因为水晶报告不支持gif图像 用于显示报告。
所以现在我有一个问题要将gif图像转换为jpeg。
示例代码:
data = File.ReadAllBytes(ImgPath);
数据是byte []类型所以我有图像路径现在我想转换成jpeg 在ReadAllBytes()之前调用
我试过这样:
using (Image img = Image.FromFile(ImgPath))
{
img.Save(ImgPath, System.Drawing.Imaging.ImageFormat.Jpeg);
}
但是我得到了通用错误Gdi出现了什么。 感谢。
答案 0 :(得分:1)
这是代码:
byte[] imagebuffer;
using (Image img = Image.FromFile(@"c:\temp_10\sample.gif"))
using (MemoryStream ms = new MemoryStream())
{
img.Save(ms, ImageFormat.Jpeg);
imagebuffer = ms.ToArray();
}
//write to fs (if you need...)
File.WriteAllBytes(@"c:\temp_10\sample.jpg", imagebuffer);
要使用的命名空间是System.Drawing
我修改了我的代码,我认为您不需要文件系统上的文件,但您可以使用字节数组来调用Crystal报告
答案 1 :(得分:0)
这里有两个可以提供帮助的地方。一个是微软关于如何将图像文件读入内存的网站。
https://msdn.microsoft.com/en-us/library/twss4wb0(v=vs.90).aspx
下一个是网站上其他用户的示例,介绍如何将文件作为所需格式读取到咬合数组中。我假设你想要它作为一个字节数组,所以你可以用它做一些事情,而不是把它作为一个文件放回去。
How to convert image in byte array
我会把它全部输入但是找到了例子并且它们是自我解释的。 : - )
答案 2 :(得分:0)
我认为您可以比bdn02's答案更简单。试试:
Image img = Image.FromFile(@"c:\temp_10\sample.gif");
img.Save(@"c:\temp_10\sample.jpg", ImageFormat.Jpeg);