首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >c#将图像格式转换为jpg

c#将图像格式转换为jpg
EN

Stack Overflow用户
提问于 2012-06-05 17:31:28
回答 3查看 67.8K关注 0票数 25

我需要从用户那里获取具有不同格式扩展名的图片,并且我希望始终将其保存为"jpg",以便于处理。在c#中有没有一种不需要武装质量就能做到这一点的好方法?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-05 17:47:15

来自:http://msdn.microsoft.com/en-us/library/system.drawing.imaging.encoderparameter.aspx

代码语言:javascript
复制
private void VaryQualityLevel()
{
// Get a bitmap.
Bitmap bmp1 = new Bitmap(@"c:\TestPhoto.jpg");
ImageCodecInfo jpgEncoder = GetEncoder(ImageFormat.Jpeg);

// Create an Encoder object based on the GUID
// for the Quality parameter category.
System.Drawing.Imaging.Encoder myEncoder =
    System.Drawing.Imaging.Encoder.Quality;

// Create an EncoderParameters object.
// An EncoderParameters object has an array of EncoderParameter
// objects. In this case, there is only one
// EncoderParameter object in the array.
EncoderParameters myEncoderParameters = new EncoderParameters(1);

EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, 
    50L);
myEncoderParameters.Param[0] = myEncoderParameter;
bmp1.Save(@"c:\TestPhotoQualityFifty.jpg", jpgEncoder, 
    myEncoderParameters);

myEncoderParameter = new EncoderParameter(myEncoder, 100L);
myEncoderParameters.Param[0] = myEncoderParameter;
bmp1.Save(@"c:\TestPhotoQualityHundred.jpg", jpgEncoder, 
    myEncoderParameters);

// Save the bitmap as a JPG file with zero quality level compression.
myEncoderParameter = new EncoderParameter(myEncoder, 0L);
myEncoderParameters.Param[0] = myEncoderParameter;
bmp1.Save(@"c:\TestPhotoQualityZero.jpg", jpgEncoder, 
    myEncoderParameters);

}

...

private ImageCodecInfo GetEncoder(ImageFormat format)
{

    ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();

    foreach (ImageCodecInfo codec in codecs)
    {
        if (codec.FormatID == format.Guid)
        {
            return codec;
        }
    }
    return null;
}
票数 26
EN

Stack Overflow用户

发布于 2013-07-29 19:08:29

我使用这个简单的扩展来转换流,它所做的只是转换它,而不是对质量做任何事情。

代码语言:javascript
复制
public static Stream ConvertImage(this Stream originalStream, ImageFormat format)
{
                var image = Image.FromStream(originalStream);

                var stream = new MemoryStream();
                image.Save(stream, format);
                stream.Position = 0;
                return stream;
}

用法:

代码语言:javascript
复制
var outputStream = gifStream.ConvertImage(ImageFormat.Png);
票数 18
EN

Stack Overflow用户

发布于 2015-09-10 22:31:26

试试这个:

代码语言:javascript
复制
       public static class BitmapExtension
       {
          public static void Save(this Bitmap bitmap, String fileName, ImageFormat imageFormat, long quality = 75L)
          {
             using (var encoderParameters = new EncoderParameters(1))
             using (encoderParameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality))
             {
                ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();

                bitmap.Save(fileName, codecs.Single(codec => codec.FormatID == imageFormat.Guid), encoderParameters);
             }
          }
       }

       ...

       Bitmap bitmap = new Bitmap("myImage.bmp");

       bitmap.Save("myImage.jpg", ImageFormat.Jpeg, 50L);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10894836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档