最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

頁面利用漸進(jìn)式JPEG來提升用戶體驗(yàn)度

 更新時(shí)間:2014年12月01日 16:13:08   投稿:hebedich  
這篇文章主要介紹了頁面利用漸進(jìn)式JPEG來提升用戶體驗(yàn)度的相關(guān)資料,需要的朋友可以參考下

今天才認(rèn)識到原來JPEG文件有兩種保存方式他們分別是Baseline JPEG(標(biāo)準(zhǔn)型)和Progressive JPEG(漸進(jìn)式)。兩種格式有相同尺寸以及圖像數(shù)據(jù),他們的擴(kuò)展名也是相同的,唯一的區(qū)別是二者顯示的方式不同。

Baseline JPEG

這種類型的JPEG文件存儲方式是按從上到下的掃描方式,把每一行順序的保存在JPEG文件中。打開這個(gè)文件顯示它的內(nèi)容時(shí),數(shù)據(jù)將按照存儲時(shí)的順序從上到下一行一行的被顯示出來,直到所有的數(shù)據(jù)都被讀完,就完成了整張圖片的顯示。如果文件較大或者網(wǎng)絡(luò)下載速度較慢,那么就會(huì)看到圖片被一行行加載的效果,這種格式的JPEG沒有什么優(yōu)點(diǎn),因此,一般都推薦使用Progressive JPEG。

baseline

Progressive JPEG

和Baseline一遍掃描不同,Progressive JPEG文件包含多次掃描,這些掃描順尋的存儲在JPEG文件中。打開文件過程中,會(huì)先顯示整個(gè)圖片的模糊輪廓,隨著掃描次數(shù)的增加,圖片變得越來越清晰。這種格式的主要優(yōu)點(diǎn)是在網(wǎng)絡(luò)較慢的情況下,可以看到圖片的輪廓知道正在加載的圖片大概是什么。在一些網(wǎng)站打開較大圖片時(shí),你就會(huì)注意到這種技術(shù)。

progressive

漸進(jìn)式圖片帶來的好處是可以讓用戶在沒有下載完圖片就可以看到最終圖像的大致輪廓,一定程度上可以提升用戶體驗(yàn)。(瀑布留的網(wǎng)站建議還是使用標(biāo)準(zhǔn)型的)

baseline_vs_progressive

另外漸進(jìn)式的圖片的大小并不會(huì)和基本的圖片大小相差很多,有時(shí)候可能會(huì)比基本圖片更小。漸進(jìn)式的圖片的缺點(diǎn)就是吃用戶的CPU和內(nèi)存,不過對于現(xiàn)在的電腦來說這點(diǎn)圖片的計(jì)算并不算什么。

說了這邊多下面就改講講怎么講圖片保存為或者轉(zhuǎn)化為Progressive JPEG了。

1、PhotoShop

在photoshop中有“存儲為web所用格式”,打開后選擇“連續(xù)”就是漸進(jìn)式JPEG。

photoshop 

具體教程參考 http://m.fzitv.net/photoshop/182198.html

2、Linux

檢測是否為progressive jpeg : identify -verbose filename.jpg | grep Interlace(如果輸出 None 說明不是progressive jpeg;如果輸出 Plane 說明是 progressive jpeg。)

將basic jpeg轉(zhuǎn)換成progressive jpeg:> convert infile.jpg -interlace Plane outfile.jpg

3、PHP

使用 imageinterlace 和 imagejpeg 函數(shù)我們可以輕松解決轉(zhuǎn)換問題。

<?php
    $im = imagecreatefromjpeg('pic.jpg');
    imageinterlace($im, 1);
    imagejpeg($im, './php_interlaced.jpg', 100);
    imagedestroy($im);
?>

4、Python

import PIL
from exceptions import IOError
img = PIL.Image.open("c:\\users\\biaodianfu\\pictures\\in.jpg")
destination = "c:\\users\\biaodianfu\\pictures\\test.jpeg"
try:
  img.save(destination, "JPEG", quality=80, optimize=True, progressive=True)
except IOError:
  PIL.ImageFile.MAXBLOCK = img.size[0] * img.size[1]
  img.save(destination, "JPEG", quality=80, optimize=True, progressive=True)

5、jpegtran

jpegtran -copy none -progressive <inputfile> <outputfile>

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

以上就是使用漸進(jìn)式JPEG圖片來提升頁面體驗(yàn)度的全部內(nèi)容了,很簡單實(shí)用,這里推薦給小伙伴們。

相關(guān)文章

  • PHP調(diào)用微博接口實(shí)現(xiàn)微博登錄的方法示例

    PHP調(diào)用微博接口實(shí)現(xiàn)微博登錄的方法示例

    這篇文章主要介紹了PHP調(diào)用微博接口實(shí)現(xiàn)微博登錄的方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-09-09
  • 在云虛擬主機(jī)部署thinkphp5項(xiàng)目的步驟詳解

    在云虛擬主機(jī)部署thinkphp5項(xiàng)目的步驟詳解

    thinkphp官網(wǎng)在去年的時(shí)候發(fā)布了tp的顛覆版本thinkphp5,tp5確實(shí)比之前的版本好用了很多,那么下面這篇文章就來給大家介紹關(guān)于在云虛擬主機(jī)部署thinkphp5項(xiàng)目的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-12-12
  • PHP register_shutdown_function函數(shù)的深入解析

    PHP register_shutdown_function函數(shù)的深入解析

    本篇文章是對PHP register_shutdown_function函數(shù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • PHP圖形計(jì)數(shù)器程序顯示網(wǎng)站用戶瀏覽量

    PHP圖形計(jì)數(shù)器程序顯示網(wǎng)站用戶瀏覽量

    這篇文章主要為大家分享了PHP圖形計(jì)數(shù)器程序,直觀的顯示網(wǎng)站用戶瀏覽量,感興趣的小伙伴們可以參考一下
    2016-07-07
  • 淺談PHP中try{}catch{}的使用方法

    淺談PHP中try{}catch{}的使用方法

    下面小編就為大家?guī)硪黄獪\談PHP中try{}catch{}的使用方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-12-12
  • Codeigniter中集成smarty和adodb的方法

    Codeigniter中集成smarty和adodb的方法

    這篇文章主要介紹了Codeigniter中集成smarty和adodb的方法,結(jié)合實(shí)例形式分析了Codeigniter庫的使用技巧,需要的朋友可以參考下
    2016-03-03
  • php-msf源碼詳解

    php-msf源碼詳解

    這篇文章主要介紹了php-msf源碼的意思以及用法相關(guān)問題,有需要的朋友跟著參考學(xué)習(xí)下吧。
    2017-12-12
  • thinkphp整合微信支付代碼分享

    thinkphp整合微信支付代碼分享

    這篇文章主要為大家分享了thinkphp整合微信支付代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Laravel 4 初級教程之安裝及入門

    Laravel 4 初級教程之安裝及入門

    本文不推薦完全不懂PHP與MVC編程的人學(xué)習(xí)。本文不是 “一步一步跟我做” 教程。本文需要你付出一定的心智去解決一些或大或小的隱藏任務(wù),以達(dá)到真正理解 Laravel 運(yùn)行邏輯的目的。
    2014-10-10
  • php解決搶購秒殺抽獎(jiǎng)等大流量并發(fā)入庫導(dǎo)致的庫存負(fù)數(shù)的問題

    php解決搶購秒殺抽獎(jiǎng)等大流量并發(fā)入庫導(dǎo)致的庫存負(fù)數(shù)的問題

    最近在做一個(gè)團(tuán)購項(xiàng)目,遇到個(gè)問題,就是在搶購、秒殺、抽獎(jiǎng)等活動(dòng)時(shí),庫存數(shù)量有限,但是同時(shí)下單人數(shù)超過了庫存數(shù)量,就會(huì)導(dǎo)致商品超售問題。那么我們怎么來解決這個(gè)問題呢,我的思路如下:
    2014-06-06

最新評論

永年县| 定结县| 万盛区| 巴林左旗| 监利县| 随州市| 怀集县| 上思县| 永福县| 巨野县| 黄山市| 建德市| 宁晋县| 石阡县| 龙陵县| 宜良县| 仪陇县| 连江县| 通州区| 稻城县| 慈溪市| 札达县| 施秉县| 泸水县| 鄱阳县| 偏关县| 衡阳县| 佳木斯市| 阿城市| 平武县| 同江市| 奉节县| 郧西县| 皋兰县| 怀集县| 和静县| 东海县| 京山县| 洪雅县| 广南县| 昌都县|