<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 101,  comments - 29,  trackbacks - 0

    你有沒有想過:為了壓縮js文件,把js文件轉化成PNG圖像,然后用 canvas 控件中的 getImageData() 函數將圖像再重新讀成js文件。我昨天在這里發表的JS文件快速加載的文章中提到了這一方法,有網友對這個做法很感興趣,于是今天詳細解讀一下。

    這樣可以做到很高的壓縮比,到底有多高,下面會提到。這種方法用到了 canvas 控件,這也意味著只有支持 canvas 控件的瀏覽器下才有效。

    現在你可以看到,上面的圖像類似一個噪聲圖像,但它實際上是一個由124K的 prototype 框架代碼轉化成的30K的8位PNG圖像(壓縮比還不錯吧)。

    其實,要將代碼轉化為圖像的格式存儲,可以轉化成GIF和PNG格式。PNG格式的圖像有24位和8位,用24位的RGB圖像,每個像素可以存儲3字節的數據,如果是用8位的RGB圖像,每個像素可以存儲1字節的數據。

    在PHOTOSHOP中做測試發現:一個300x100的純色雜點8位圖像可以壓縮到5K,而同樣的純色雜點圖像,如果是100x100的24位圖像只能壓縮到20K。如果是同樣圖案的8位GIF圖像,壓縮效果比PNG要差一些。所以,我們選擇用8位的PNG圖像作為壓縮和解壓縮的存儲格式。

    現在,我們就需要開始壓縮圖像了,下面是用PHP寫的壓縮文件地址。
    http://www.cleanthem.com/code/20120620/js-to-png.txt

    它讀取JS文件并創建一個PNG圖像,圖像中的每個像素中是一個0-255之間的值,而這個值對應的是JS字符的ascII的值。

    當然,除了壓縮,還要有解壓縮,也就是將圖像讀取為JS文件的過程。這個函數是用JS寫的,可以從下面的位置下載這個文件。
    http://www.cleanthem.com/code/20120620/pngdata.txt

    最后給出在線測試地址,在這個網頁上,您可以在列表中選擇一個PNG圖像文件,點擊 load file 按鈕可以在網頁上看到這個圖像,在圖像的下面是由這個圖像所讀出來的代碼文件。

    http://www.nihilogic.dk/labs/canvascompress/

     

    注:轉載請注明出處,覺得有用就推薦一下吧~

    posted on 2012-08-05 01:26 mixer-a 閱讀(2326) 評論(4)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲三级高清免费| 国产成人一区二区三区视频免费| 成人免费AA片在线观看| 蜜芽亚洲av无码精品色午夜| 久久免费福利视频| 亚洲短视频男人的影院| 久久久久久AV无码免费网站下载| 亚洲AV天天做在线观看| 成人黄网站片免费视频| 亚洲国产精品无码久久一线| 免费国产在线视频| 亚洲视频在线观看视频| 五月亭亭免费高清在线| 亚洲一区在线视频观看| 最近中文字幕mv手机免费高清| 亚洲午夜理论片在线观看| 免费黄色小视频网站| 亚洲黄色免费在线观看| 亚洲欧洲日韩国产| 天天看免费高清影视| 亚洲AV无码专区亚洲AV桃| 亚洲精品老司机在线观看| 国内精品免费久久影院| 亚洲成人网在线观看| 午夜宅男在线永久免费观看网| 久久亚洲精品11p| 亚洲熟妇av一区二区三区| 久久久久国产精品免费免费不卡| 亚洲人和日本人jizz| 老司机永久免费网站在线观看| 免费国产va在线观看| 亚洲国产精品不卡在线电影| 青青青国产在线观看免费网站| 美女无遮挡免费视频网站| 亚洲精品无码久久久久去q| 蜜桃AV无码免费看永久| 亚洲国产精品成人AV在线| 亚洲日本va在线视频观看| 日本视频一区在线观看免费| 午夜不卡AV免费| 亚洲精品国产成人中文|