将图像从 GIF 转换为 JPEG



我不得不将GIF转换为JPEG。我必须将字节保存到图像,然后重新打开它并将其转换为 JPEG。我尝试使用两个流更改类型,但出现错误"GDI+ 中发生一般错误"。对此有什么解释吗?

public static byte[] GetJpegBytes(byte[] bytes)
{
using (var stream = new MemoryStream(bytes))
{
var temporaryImage = $"{Path.Combine(System.Web.HttpRuntime.AppDomainAppPath, Guid.NewGuid().ToString())}.jpeg";
var image = Image.FromStream(stream);
image.Save(temporaryImage, ImageFormat.Jpeg);
using (var memoryStream = new FileStream(temporaryImage, FileMode.Open))
{
byte[] byteRsult = new byte[memoryStream.Length];
memoryStream.Read(byteRsult, 0, (int)memoryStream.Length);
memoryStream.Close();
File.Delete(temporaryImage);
return byteRsult;
}
}
} 

您可以使用此扩展名转换格式图像 我使用这个简单的扩展来转换流。

public static Stream ConvertImage(this Stream originalStream, ImageFormat format)
{
var image = Image.FromStream(originalStream);
using(var stream = new MemoryStream())
{
image.Save(stream, format);
stream.Position = 0;
return stream;
}
}

用法:

var outputStream = stream.ConvertImage(ImageFormat.Png);

如果你不想使用流,你可以试试这个:

Bitmap bitmap = new Bitmap("C:MyFile.jpg");
bitmap.Save("C:MyNewFile.gif", ImageFormat.Gif);

最新更新