<Extension()> _
Public Sub Save(ByVal b As Bitmap, ByVal FileName As String, ByVal Compression As Long, ByVal MimeType As String)
Dim Params As EncoderParameters = New EncoderParameters(2)
Dim CodecInfo As ImageCodecInfo = GetEncoderInfo(MimeType)
Params.Param(0) = New EncoderParameter(Encoder.RenderMethod, EncoderValue.RenderProgressive)
Params.Param(1) = New EncoderParameter(Encoder.Quality, Compression)
b.Save(FileName, CodecInfo, Params)
End Sub
это не работает. Не сохраненный как прогрессивный. Как я могу сделать это и возможно также указать номер передач.??
Насколько я могу судить, это не поддерживается. Я пробовал код, предложенный здесь и здесь , и пришел к этому коду C #:
using (Image source = Image.FromFile(@"D:\temp\test2.jpg")) {
ImageCodecInfo codec = ImageCodecInfo.GetImageEncoders().First(c => c.MimeType == "image/jpeg");
EncoderParameters parameters = new EncoderParameters(3);
parameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L);
parameters.Param[1] = new EncoderParameter(System.Drawing.Imaging.Encoder.ScanMethod, (int)EncoderValue.ScanMethodInterlaced);
parameters.Param[2] = new EncoderParameter(System.Drawing.Imaging.Encoder.RenderMethod, (int)EncoderValue.RenderProgressive);
source.Save(@"D:\temp\saved.jpg", codec, parameters);
}
Установив как чересстрочный, так и прогрессивный режим, он по-прежнему сохраняет обычный базовый JPEG.Я пробовал любую комбинацию любой из настроек и их альтернативных настроек (без чересстрочной развертки и без прогрессивной развертки) и не заметил никакой разницы в итоговом файле изображения.
Я не нашел ни одного ответа от кого-либо, говорящего, что им действительно удалось сохранить прогрессивный JPEG в .NET.
Значения параметров ScanMethodInterlaced
и RenderProgressive
описаны только как «Не используется в GDI + версии 1.0». в
документации .