Bmp в jpg/png на С#

Есть ли способ преобразовать изображение 9X_visual-c# bmp в jpg/png без потери качества в C#? Используя 9X_visual-c# класс Image, мы можем конвертировать bmp 9X_c#-language в jpg, но качество выходного изображения 9X_csharp очень плохое. Можем ли мы получить такой 9X_c#-language же уровень качества, как изображение, преобразованное 9X_visual-c# в jpg с использованием фотошопа с самым 9X_c# высоким качеством?

56
0
6
Общее количество ответов: 6

Ответ #1

Ответ на вопрос: Bmp в jpg/png на С#

var qualityEncoder = Encoder.Quality; var quality = (long); var ratio = new EncoderParameter(qualityEncoder, quality ); var codecParams = new EncoderParameters(1); codecParams.Param[0] = ratio; var jpegCodecInfo = ; bmp.Save(fileName, jpegCodecInfo, codecParams); // Save to JPG 
9X_c#-language
58
2

  • Да, должно быть несколько операторов using. Этот код выше является примером ...

Ответ #2

Ответ на вопрос: Bmp в jpg/png на С#

public static class BitmapExtensions { public static void SaveJPG100(this Bitmap bmp, string filename) { EncoderParameters encoderParameters = new EncoderParameters(1); encoderParameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L); bmp.Save(filename, GetEncoder(ImageFormat.Jpeg), encoderParameters); } public static void SaveJPG100(this Bitmap bmp, Stream stream) { EncoderParameters encoderParameters = new EncoderParameters(1); encoderParameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L); bmp.Save(stream, GetEncoder(ImageFormat.Jpeg), encoderParameters); } public static ImageCodecInfo GetEncoder(ImageFormat format) { ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders(); foreach (ImageCodecInfo codec in codecs) { if (codec.FormatID == format.Guid) { return codec; } } return null; } } 
9X_csharp
43
1

  • Или даже короче `return ImageCodecInfo.GetImageEncoders(). FirstOrDefault (x => x.FormatI ...

Ответ #3

Ответ на вопрос: Bmp в jpg/png на С#

При условии, что BitmapExtensions от jestro 9X_visual-c# великолепны, я их использовал. Однако я 9X_c# хотел бы показать исправленную версию - работает 9X_.cs-file для родительского класса Image, что, как 9X_c-sharp я думаю, более удобно и обеспечивает способ 9X_c# обеспечения качества:

public static class ImageExtensions { public static void SaveJpeg(this Image img, string filePath, long quality) { var encoderParameters = new EncoderParameters(1); encoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, quality); img.Save(filePath, GetEncoder(ImageFormat.Jpeg), encoderParameters); } public static void SaveJpeg(this Image img, Stream stream, long quality) { var encoderParameters = new EncoderParameters(1); encoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, quality); img.Save(stream, GetEncoder(ImageFormat.Jpeg), encoderParameters); } static ImageCodecInfo GetEncoder(ImageFormat format) { ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders(); return codecs.Single(codec => codec.FormatID == format.Guid); } } 

16
0

Ответ #4

Ответ на вопрос: Bmp в jpg/png на С#

Принципиально вы не сможете сохранить то 9X_c-sharp же качество, потому что jpg (насколько мне 9X_c#-language известно) всегда с потерями даже при максимально 9X_visual-c# возможных настройках качества.

Если качество 9X_visual-c# с точностью до бита действительно важно, рассмотрите 9X_csharp возможность использования png, у которого 9X_c-sharp есть некоторые режимы без потерь.

1
0

Ответ #5

Ответ на вопрос: Bmp в jpg/png на С#

Сразу хочу сказать, что JPEG по своей природе 9X_csharp является форматом с потерями. Таким образом, теоретически 9X_.cs-file даже при самых высоких настройках у вас 9X_c#-language будет некоторая потеря информации, но это 9X_c-sharp во многом зависит от изображения. Но png 9X_c# без потерь.

1
0

Ответ #6

Ответ на вопрос: Bmp в jpg/png на С#

Я работаю над приложением для отчета о расходах 9X_csharp и очень доволен настройками качества по 9X_csharp умолчанию для JPG (и PNG) при сохранении 9X_c#.net из объекта Bitmap.

https://msdn.microsoft.com/en-us/library/9t4syfhh%28v=vs.110%29.aspx

Bitmap finalBitmap = ....; //from disk or whatever finalBitmap.Save(xpsFileName + ".final.jpg", ImageFormat.Jpeg); finalBitmap.Save(xpsFileName + ".final.png", ImageFormat.Png); 

Я использую .NET 4.6 ... возможно, в 9X_c-sharp последующих выпусках фреймворка качество 9X_c-sharp улучшилось.

1
0