Salva JPG in formato progressivo

 _ 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 

questo non funziona. Non è stato salvato come progressivo. Come posso fare questo, e forse anche specificare il numero di passaggi. ??

Per quanto posso dire, non è supportato. Ho provato il codice suggerito qui e qui e sono arrivato a questo codice 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); } 

Impostando sia la modalità interlacciata che quella progressiva, salva comunque un normale JPEG di base. Ho provato qualsiasi combinazione di entrambe le impostazioni e le loro impostazioni alternative (non interlacciate e non progressive) e non ho visto alcuna differenza nel file immagine risultante.

Non ho trovato alcuna risposta da parte di nessuno che abbia affermato di essere effettivamente riuscito a salvare un JPEG progressivo in .NET.

Entrambi i valori dei parametri ScanMethodInterlaced e RenderProgressive sono descritti solo come “Non utilizzato in GDI + versione 1.0”. nella documentazione .

Suppongo di utilizzare l’utilità jpegtran come descritto in Ottimizzazione dell’immagine, Parte 4: JPEG progressivo … Hot or Not? articolo:

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

Inoltre puoi ottimizzare le tabelle di Haffman in questo modo:

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