事由是這樣的,接到一個截圖需求(以 輸出),但是在某個環境下, 這個介面返回的資料是錯誤的。
為此,寫一篇文章記錄一下,如何繞過 ,生成 字串。
以下為 Cocos官網文件中給出的截圖事例程式碼。
https://docs。cocos。com/creator/manual/zh/render/camera。html#%E6%88%AA%E5%9B%BE
官網中的截圖程式碼
幸運的是 能讀到點陣圖的畫素資訊。
程式就是處理輸入和輸出的過程,為此,明確我們的輸入輸出。
輸入: 點陣圖資訊 和 圖片寬高。
輸出:帶有圖片資訊的字串。(可將該字串放瀏覽器中的位址列,會返回一張圖片)
經思考一番,決定採用以下幾步實現:
畫素資料 -> 轉 資料 -> 轉
如何轉 格式?按照廠裡的方法,應該去了解其檔案格式如何生成,需要什麼標頭檔案資訊,關於相關內容可參考wiki :
https://en。wikipedia。org/wiki/JPEG
但,在思考前,可以考慮是否有前任的輪子。畢竟時間也是一種成本。
很快,很有型地在大型交友網站 中找到了前人留下的輪子。
https://github。com/jpeg-js/jpeg-js/blob/master/lib/encoder。js
這是 的程式碼,白玉無冰這裡操作的是直接複製出來,放到一個 程式碼中,匯出 方法。
搬運與改造 jpeg-js
再參考 中的例項程式碼,組織一下,很快就生成了 的資料。
畫素資料 轉 JPEG 資料
再把 的資料中 轉 。
Uint8Array 轉 base64
但發現截圖反了。
截圖反了
最後,再對原來的資料翻轉一下,完整的核心程式碼如下:
完整程式碼工程:
https://github。com/baiyuwubing/cocos-creator-examples/tree/master/2。4。x/assets/demo06