UNPKG

w-puppeteer-uitest

Version:
58 lines (49 loc) 1.36 kB
import Jimp from 'jimp' /** * 陣列數值比較 * * @private * @param {Array} arr1 輸入陣列1 * @param {Array} arr2 輸入陣列2 * @returns {Number} 回傳相似度0~1 */ function arrCompare(arr1, arr2) { if (arr1.length !== arr2.length) { return 0 } let rr = 0 let n = arr1.length for (let i = 0, len = arr1.length; i < len; i++) { let r = Math.abs(arr1[i] - arr2[i]) rr += r / 255 } rr = 1 - Math.pow(rr / n, 1 / 3) //rr=1-Math.sqrt(rr/n) return rr } /** * 圖片base64轉ImageData * * @private * @param {String} b64 * @returns {Promise} 回傳Promise,resolve為ImageData的陣列,reject為處理失敗 */ async function b642imgdata(b64) { let b = Buffer.from(b64, 'base64') let image = await Jimp.read(b) return image.bitmap.data } /** * 2張圖片base64比對 * * @memberOf w-puppeteer-uitest * @param {String} b64_a 輸入圖片a的base64格式字串 * @param {String} b64_b 輸入圖片b的base64格式字串 * @returns {Promise} 回傳Promise,resolve為相似度0~1,reject為處理失敗 */ async function compareB64(b64_a, b64_b) { let data_a = await b642imgdata(b64_a) let data_b = await b642imgdata(b64_b) return arrCompare(data_a, data_b) } export default compareB64