引子:
前段時間 做新版2.0 首頁 的時候, 總感覺 新版首頁 線上 精彩回顧下的 2張圖片顏色怪怪的,當時以為是圖片壓縮太厲害導致的,由於實在太忙就沒太在意!以下 是來自線上 截圖:
紅色方框 我認為 那2張 怪怪的 圖片,大家感受下顏色是否不一樣!
問題描述:
今天,測試同學找到我,說新版首頁 精彩回顧下方 2張圖片 在 ie8下 圖片展現不出來了!
開始排查:
通過 瀏覽器 查看圖片 DOM結構, 代碼如下:
<img data-original="http://file.xxxx.com/view/banner/09e7286d39013387ff07e0efe7dc8c6ab3a51aef.jpg" src="http://g.tbcdn.cn/s.gif" alt="" width="174" height="113” >
起初, 第一反應是圖片地址問題,結合查看到的圖片DOM結構,懷疑是 image layzload 懶加載 機制導致,故而 嘗試把 圖片真實地址 直接寫在 圖片 img src 地址上 解決!
ps:圖片懶加載機制原理:
通俗的講就是js檢測 用戶鼠標滾動到 可視區域后,將預先埋在 img元素上 data-original 真實圖片地址 替換到 圖片 src上,從而達到圖片懶加載的目的,實現性能優化!
結果 還是不行!
呃~
進一步分析:
快速列舉下相關要素
- 非 ie瀏覽器 正常顯示圖片;
- 小於等於 原生ie 8 以下無法正常展現;
- 非圖片 懶加載檢測機制問題;
- 直接在瀏覽器中訪問 圖片地址 非 ie瀏覽器都正常顯示, 原生ie8 及其以下不能正常顯示(出現圖片加載失敗叉叉圖標 )
初步分析結論:
基於上述情況, 由此 分析出是2個可能性:
- 圖片地址問題(如:合法性、安全性等)
- 圖片本身問題
繼續排查:
最初懷疑是 file路徑關鍵字 影響(純屬自己假設歪歪),因為在window系統下,//file 是本地圖片 window系統特有的路徑地址,但 :
- ie8以上ok;
- 瀏覽器未發出警告和錯誤通知!說明url路徑 安全、合法~
- 其他 同域名:http://file.xxxxx.com/ 下的圖片展現正常!
故而 圖片url地址 首先被 排除掉!
進一步排查:
將 無法正常 顯示的圖片 下載下來,二話不說,先查看圖片信息:
- 查看文件信息,如圖:
看到沒,CMYK!
猛然一驚,一眼 就瞅到 CMYK,頓時發現了 根本問題所在!於是也明白了 之前總覺得圖片顏色怪怪的根本原因了!
先 特寫感受下 RGB 和 CMYK 圖片差異:
以下2張相同圖片,使用 不同顏色模式 視覺差異( 紅色方框 的是 用於工業印刷用的),大家感受下:
CMYK顏色模式 簡單解釋:
CMYK 顏色模式 主要用於 工業排版印刷使用,也被印刷業 稱之為4色加色增強模式(青、品紅、黃、黑值), 並不是 適用於 基於“光”色的3原色(紅 綠 藍) 256階色的 屏幕 圖片展示!
學過平面視覺設計或動畫相關、美術專業 同學都知道,這里我就不多嘰歪了!
知道了圖片主流這2種(總共3種) 顏色模式的差異,但和瀏覽器有什么關系呢?不急,往下看!
CMYK 各大 瀏覽器 支持情況:
Browser support for CMYK encoded images
Browser | RGB | CMYK |
IE6, 7, 8 | Yes | No |
IE9 | Yes | Yes |
Firefox 2.x | Yes | No |
Firefox 3.x - | Yes | Yes |
Safari 4- | Yes | Yes |
Google Chrome 5 - | Yes | Yes |
解決之道:
修復這個問題 (Fixing this issue)
Image editors such as Adobe Photoshop, The Gimp, and others is capable of identifying if a jpg image is a CMYK image and saving a CMYK jpg as a RGB jpg.
最佳方式,使用 Adobe Photoshop 圖片編輯器或其他能夠轉換的圖片編輯器,將圖片 顏色模式 從CMYK 保存為 RGB 顏色模式即可!比如我的:
至此,保存重新上傳后,ie8等顯示正常!10分鍾,問題解決!!!
刨根問底:
可能你會問? 既然 你說圖片色彩模式有問題,那為什么 非ie 瀏覽器 都可以呢?
其實你讓我回答,我只能說 人家 瀏覽器渲染引擎 比你ie的 trident引擎 先進,兼容、渲染機制處理的好! 從支持瀏覽器支持列表中也可以看到, Firefox 2.x 想當初也是不行滴!
對於這個問題, 微軟在新一代瀏覽器 里已經修復,故而從 ie9開始,可以正常展現!事實上從上面的支持 表中 或者 實際操作效果 來看,也是如此!
后記:
這是一個隱藏很深,不容易被發現的 細節 所帶來的圖片展現問題, 我這里也只是有針對性的、簡單的 剖析下原因! 拋磚引玉,供大家參考!
希望 運營同學、PD同學等其他 上傳圖片 的使用者們,注意下這個問題,謝謝!