【发布时间】:2017-06-22 15:16:28
【问题描述】:
我将图像从一种格式转换为另一种格式,并希望使用开关来处理不同的格式。 System.Drawing.Imaging.ImageFormat 是公共密封类,开关不适用于它。 下面的代码正在运行,但我想在这里使用开关。你能帮我提些建议吗?
public static void ConvertImageFormat(Image image, string targetImageFilePath, int newWidth, int newHeight, ImageFormat imageFormatToConvert)
{
using (Bitmap bitmap = new Bitmap(image, newWidth, newHeight))
{
using (Graphics graphic = Graphics.FromImage(bitmap))
{
graphic.InterpolationMode = InterpolationMode.HighQualityBicubic;
graphic.SmoothingMode = SmoothingMode.HighQuality;
graphic.CompositingQuality = CompositingQuality.HighQuality;
graphic.PixelOffsetMode = PixelOffsetMode.HighQuality;
graphic.DrawImage(image, 0, 0, newWidth, newHeight);
if (Equals(ImageFormat.Png, imageFormatToConvert))
{
bitmap.Save(targetImageFilePath, ImageFormat.Png);
}
else if (Equals(ImageFormat.Gif, imageFormatToConvert))
{
bitmap.Save(targetImageFilePath, ImageFormat.Gif);
}
else if (Equals(ImageFormat.Jpeg, imageFormatToConvert))
{
ImageCodecInfo[] arrImageCodecInfo = ImageCodecInfo.GetImageEncoders();
using (EncoderParameters encoderParameters = new EncoderParameters(1))
{
encoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, 90L);
bitmap.Save(targetImageFilePath, arrImageCodecInfo[1], encoderParameters);
}
}
else
{
throw new Exception($"Convert to <{imageFormatToConvert.ToString()}> from " +
$"<{new ImageFormatConverter().ConvertToString(image.RawFormat)}>" +
$" image format is not supported now.");
}
}
}
}
【问题讨论】:
标签: c# switch-statement image-formats