Сохранить JPG в прогрессивном формате

<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

это не работает. Его не сохранили как прогрессивный. Как я могу это сделать, и, возможно, также указать nr пропусков.??

2 ответов


насколько я могу судить, он не поддерживается. Я попробовал код предложил здесь и здесь и приехали в этот 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.Сеть.

и ScanMethodInterlaced и RenderProgressive значения параметров описываются только как " не используется в GDI+ версии 1.0.- in документация.


Я предполагаю использовать использовании jpegtran утилитой, как описано в Оптимизация изображения, Часть 4: прогрессивный JPEG ... горячий или нет? статьи:

jpegtran -copy none -progressive input.jpg output.jpg

кроме того, вы можете оптимизировать таблицы Хаффмана таким образом:

jpegtran -copy none -optimize input.jpg output.jpg