[英]Lossless rotation of a JPG image with Image.Save and EncoderParameters fails
[英]Save JPG in progressive format
<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的通行證。
據我所知,它不受支持。 我已經嘗試過這里和這里建議的代碼,並得到了這個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。 我嘗試了任何設置和其他設置(非隔行掃描和非漸進式)的任意組合,並且在生成的圖像文件中根本沒有看到任何差異。
我沒有發現任何人說他們實際上已經設法在.NET中保存漸進式JPEG的任何回復。
ScanMethodInterlaced
和RenderProgressive
參數值僅描述為“未在GDI +版本1.0中使用”。 在文檔中 。
我想使用jpegtran實用程序,如圖像優化,第4部分:漸進式JPEG ...熱或不是? 文章:
jpegtran -copy none -progressive input.jpg output.jpg
此外,您可以通過以下方式優化Haffman表:
jpegtran -copy none -optimize input.jpg output.jpg
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.