1. 程式人生 > >實現圖片載入從模糊到清晰顯示的方法

實現圖片載入從模糊到清晰顯示的方法

1.通過程式碼控制

QQ相簿最近做的一些優化方法解決了上訴兩個方法的缺點和滿足了使用者檢視照片的需求:第一時間看到照片大概情況和儘可能快的看到清晰的原圖。該方法使用縮圖和原圖同時載入併疊加顯示,先載入縮圖並拉大顯示,大圖疊加在縮圖上面同時載入。縮圖很小通常很快就能給使用者看到照片模糊的效果,大圖載入過程中從上往下逐步覆蓋縮圖,這樣使用者就可以看到載入過程中的大圖。

如上如所示,本方法的處理步驟是:
1).獲取照片縮圖和原圖的URL,獲取照片的長和寬;
2).載入並顯示照片縮圖,將縮圖按照片的長和寬拉伸顯示,這時使用者看到的是模糊的效果;
3).載入並顯示照片原圖,將原圖疊加在縮圖上面顯示,原圖載入多少就顯示多少,沒有載入的還是顯示縮圖,逐步將縮圖覆蓋掉,原圖在載入的過程中使用者看到的是照片從模糊到清晰的漸變效果。
4).原圖載入完後,原圖已經全部將縮圖覆蓋,這時使用者看到的是真實的原圖。此時可以隱藏縮圖防止縮圖干擾PNG或GIF等有透明效果的圖片顯示。

<!--設定照片的大小--> < div style = "width:400px;height:300px;" >      <!--小圖拉大顯示-->      < img src = "small_url" style = "width:100%;height:100%;" />      <!--原圖疊加在小圖上面-->     
< img src = "big_url" style = "width:100%;height:100%;position:absolute;top:0px;left:0px;" /> </ div >   2.通過圖片本身的載入方式

漸進式JPEG建立

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); }