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# высоким качеством?
Ответ #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
- Да, должно быть несколько операторов 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
- Или даже короче `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);
}
}
Ответ #4
Ответ на вопрос: Bmp в jpg/png на С#
Принципиально вы не сможете сохранить то 9X_c-sharp же качество, потому что jpg (насколько мне 9X_c#-language известно) всегда с потерями даже при максимально 9X_visual-c# возможных настройках качества.
Если качество 9X_visual-c# с точностью до бита действительно важно, рассмотрите 9X_csharp возможность использования png, у которого 9X_c-sharp есть некоторые режимы без потерь.
Ответ #5
Ответ на вопрос: Bmp в jpg/png на С#
Сразу хочу сказать, что JPEG по своей природе 9X_csharp является форматом с потерями. Таким образом, теоретически 9X_.cs-file даже при самых высоких настройках у вас 9X_c#-language будет некоторая потеря информации, но это 9X_c-sharp во многом зависит от изображения. Но png 9X_c# без потерь.
Ответ #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 улучшилось.
-
8
-
4
-
3
-
5
-
4
-
5
-
3
-
21
-
10
-
5
-
2
-
11
-
3
-
8
-
5
-
5
-
6
-
7
-
5
-
2
-
6
-
1
-
13
-
5
-
10
-
4
-
4
-
5
-
4
-
3
-
3
-
3
-
3
-
5
-
2
-
3
-
2
-
1
-
3
-
3
-
3
-
1
-
2
-
3
-
1
-
14
-
59
-
38
-
9
-
17