Как я могу конвертировать BMP в JPEG без сохранения в файл? - PullRequest
0 голосов
/ 14 марта 2019

У меня есть объект изображения BMP, который содержит изображение BMP, как я могу преобразовать его в формат JPEG без сохранения в файл?

Все, что мне нужно знать, это размер файла JPEG после преобразования,поэтому, если у меня есть несколько изображений BMP, я хочу преобразовать каждое из них в JPEG, а затем посмотреть размер каждого.

Как я могу это сделать?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 14 марта 2019

Как насчет использования пакета nuget, такого как Magick.NET или аналогичного. Зачем изобретать велосипед и заботиться о кодировании, настройках преобразования, оптимизации, если другие уже сделали это для вас.

0 голосов
/ 14 марта 2019

Просто сохраните это поток. и посмотри размер.

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;

    }
...