«Параметр недействителен». при использовании сохранения растрового изображения - PullRequest
3 голосов
/ 21 декабря 2008

Я пытаюсь сохранить формат растрового изображения jpg с указанным качеством кодирования. Однако я получаю исключение («Параметр недопустим.») При вызове метода сохранения.

Если я пропущу два последних параметра в bmp.save, он будет работать нормально.

        EncoderParameters eps = new EncoderParameters(1);
        eps.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 16);
        ImageCodecInfo ici = GetEncoderInfo("image/jpeg");
        string outfile = outputpath + "\\" + fileaddition + sourcefile.Name;
        bmp.Save(outfile,ici,eps );

        bmp.Dispose();
        image.Dispose();
        return true;
    }
    ImageCodecInfo GetEncoderInfo(string mimeType)
    {
        int j;
        ImageCodecInfo[] encoders;
        encoders = ImageCodecInfo.GetImageEncoders();
        for (j = 0; j < encoders.Length; ++j)
        {
            if (encoders[j].MimeType == mimeType)
                return encoders[j];
        }
        return null;
    }
}

Спасибо

Ответы [ 2 ]

26 голосов
/ 21 декабря 2008

GDI + довольно ненадежный. Вам нужно будет использовать 16L для значения или привести к (long).

4 голосов
/ 23 августа 2009

Вы должны привести значение качества к длинному, как это:

eps.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, (long)16);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...