【问题标题】:How can I convert a BMP to JPEG without saving to file?如何在不保存到文件的情况下将 BMP 转换为 JPEG?
【发布时间】:2019-03-14 11:59:05
【问题描述】:

我有一个包含 BMP 图像的 BMP 图像对象,如何将其转换为 JPEG 格式而不保存到文件?

我只需要知道转换后 JPEG 文件的大小,所以如果我有几张 BMP 图像,我想将它们中的每一张转换为 JPEG,然后查看每张的大小。

我该怎么做?

谢谢。

【问题讨论】:

  • 将其保存到 MemoryStream。

标签: c# file encoding type-conversion jpeg


【解决方案1】:

只需将其保存为流。和外观尺寸。

private ImageCodecInfo GetEncoder(ImageFormat format)
    {

        ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();

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

    private void Form1_Load(object sender, EventArgs e)
    {

        Bitmap bmp1 = new Bitmap(@"C:\Users\ercan.acar\Pictures\Current CR Sticker.PNG");
        ImageCodecInfo jpgEncoder = GetEncoder(ImageFormat.Jpeg);

        System.Drawing.Imaging.Encoder myEncoder =System.Drawing.Imaging.Encoder.Quality;

        EncoderParameters myEncoderParameters = new EncoderParameters(1);

        EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder,
            50L);
        myEncoderParameters.Param[0] = myEncoderParameter;
        Stream stream=new MemoryStream();
        bmp1.Save(stream, jpgEncoder,myEncoderParameters);
        //bmp1.Save(@"C:\Users\ercan.acar\Documents\TestPhotoQualityFifty.jpg",);

        var size = stream.Length;

    }

【讨论】:

    【解决方案2】:

    如何使用像 Magick.NET 或类似的 nuget 包。 如果其他人已经为您完成了这项工作,为什么还要重新发明轮子并关心编码、转换调整、优化。

    【讨论】:

      猜你喜欢
      • 2021-05-08
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-22
      • 1970-01-01
      • 2017-08-03
      • 1970-01-01
      • 2020-02-20
      相关资源
      最近更新 更多