我將圖像從一種格式轉換爲另一種格式,並希望使用該開關處理不同的格式。 System.Drawing.Imaging.ImageFormat是公共密封類,交換機不能使用它。 下面的代碼正在工作,但我想在這裏使用開關。你能幫我一些建議嗎?是否可以使用開關選擇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.");
}
}
}
}
謝謝。在提出問題之前,我閱讀了這個文檔,但可能是我錯過了一些東西。 UPD:簡化這種方式並不好,在我看來,因爲如果你添加支持[tiff格式](https://stackoverflow.com/questions/11668945/convert-tiff-to-jpg-format/11669224#11669224)你需要添加新的如果。 –
@NikitaSychou我已經寫了該代碼只看到你提供的代碼,並且無處寫下這種情況可能會改變。是的,如果你添加其他格式的代碼的特殊部分,當然這個代碼不是簡化任何事情。 –