{"version":3,"sources":["jsdelivr-header.js","/npm/colorquant-node@1.0.0/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACcA,IAAI,GAAK,QAAQ,MACb,UAAY,QAAQ,mBACpB,aAAe,QAAQ,sBACvB,WAAa,QAAQ,uBAErB,cAAgB,SAChB,WAAa,IAKjB,SAAS,aAAa,GACpB,IAAK,EAAS,OAAO,KAGrB,KAAsB,iBAAX,GAAuB,EAAQ,OAAS,GAgBjD,OAAO,EAdP,IAAI,EAAM,EAAQ,OAAO,GAIzB,GAHS,sBAGF,KAAK,GACV,IACE,OAAO,GAAG,aAAa,EACzB,CACA,MAAM,GACJ,OAAO,IACT,CAMJ,OAAO,IACT,CAGA,SAAS,aAAa,GACpB,IAAK,EAAS,OAAO,KAErB,IACE,OAAO,UAAU,EACnB,CACA,MAAM,GACJ,OAAO,IACT,CACF,CAGA,SAAS,aAAa,EAAK,GACrB,GAA+B,mBAAZ,GACrB,EAAS,EAEb,CAKA,OAAO,QAAU,eAAe,EAAS,EAAI,GAK3C,IAAI,EAAS,CACX,KAAM,EACN,MAAO,eAKL,EAAO,aAAa,GACxB,IAAK,EAGH,OAFA,EAAO,KAAO,OACd,aAAa,EAAQ,GAKvB,IAAI,EAAO,aAAa,GACxB,IAAK,EAGH,OAFA,EAAO,KAAO,OACd,aAAa,EAAQ,GAMvB,IAAI,EAAY,GAChB,GAAI,EAAK,QAAyB,OAAf,EAAK,OACtB,IACE,QAAkB,WAAW,iBAAiB,EAAM,MAAO,WAC7D,CACA,MAAM,GAGJ,OAFA,EAAO,KAAO,OACd,aAAa,EAAQ,EAEvB,MAEG,GAAI,EAAK,QAAyB,OAAf,EAAK,OAC3B,IACE,QAAkB,WAAW,iBAAiB,EAAM,MAAO,WAC7D,CACA,MAAM,GAIJ,OAFA,EAAO,KAAO,OACd,aAAa,EAAQ,EAEvB,CAGF,IAAK,GAAa,aAAqB,OAAS,EAG9C,OAFA,EAAO,KAAO,OACd,aAAa,EAAQ,GAOvB,IACE,IAAI,EAAM,aAAa,EAAU,GACjC,IAAK,EAGH,OAFA,EAAO,KAAO,OACd,aAAa,EAAQ,GAIvB,EAAO,KAAO,EACd,EAAO,MAAQ,CACjB,CACA,MAAM,GAGJ,OAFA,EAAO,KAAO,OACd,aAAa,EAAQ,EAEvB,CAEA,aAAa,EAAQ,EAEvB","file":"/npm/colorquant-node@1.0.0/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/colorquant-node@1.0.0/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","// 取色程序主要用于提取图片主题色\n// 主程序逻辑分三步处理，最后返回结果数组\n// step1 通过fs和imageinfo获取图片信息和图片的二进制数据\n// step2 通过colorquant获取主题色数组\n// step3 通过filtercolors对颜色进行二次处理\n//\n// bowen & ct\n// 暂时只支持jpg,png解释\n\n\n// 返回结果信息的code值意义\n// 1: 返回成功并计算出color值\n// 0: 主流程没有处理则返回\n// 2: 获取图片二进制数据失败，路径或者是图片格式不支持\n// 3: colorquant解释jpg出错\n// 4: colorquant解释png出错\n// 5: colorlist返回出错\n// 6: filtercolors出错\n\n\nvar fs = require('fs');\nvar imageinfo = require('./lib/imageinfo');\nvar filtercolors = require('./lib/filtercolors');\nvar colorquant = require('./lib/colorquant.js');\n\nvar DEFAULT_COLOR = 'f2f2f2';                   // 默认颜色值\nvar kMAX_COLOR = 256;                           // 默认最大颜色\n\n\n\n// 获取图片数据\nfunction getImageData(imgdata) {\n  if (!imgdata) return null;\n\n  // 判断是否为路径\n  if (typeof imgdata == \"string\" && imgdata.length > 4) {\n    //二进制数据也可能是string, 获取后4位判断是否含图片后缀\n    var str = imgdata.slice(-5);\n    var re = /\\.jpg|\\.jpeg|\\.png/i;             // 暂时只支持jpg和png解释\n\n    // 通过路径读取\n    if (re.test(str)) {\n      try {\n        return fs.readFileSync(imgdata);\n      }\n      catch(e) {\n        return null;\n      }\n    }\n  }\n  else {\n    return imgdata;\n  }\n  return null;\n};\n\n// 获取图片信息\nfunction getImageInfo(imgdata) {\n  if (!imgdata) return null;\n\n  try {\n    return imageinfo(imgdata);\n  }\n  catch(e) {\n    return null;\n  }\n}\n\n// 处理结果\nfunction returnResult(res, callback) {\n  if (callback && typeof callback == 'function') {\n    callback(res);\n  }\n}\n\n\n\n\nmodule.exports = async function(imgdata, num,callback) {\n  // 因为已经用了callback的方式处理返回\n  // 所以只能每处理一个情况就return;\n\n  // 返回结果\n  var result = {\n    code: 0,                        // 1成功, 其它数值是各种错误信息的返回\n    color: DEFAULT_COLOR            // 颜色值\n  };\n\n  // step1\n  // 检查imgdata的类型，路径还是数据\n  var data = getImageData(imgdata);\n  if (!data) {\n    result.code = 2;\n    returnResult(result, callback);\n    return;\n  };\n\n  // 检查图片类型\n  var info = getImageInfo(data);\n  if (!info) {\n    result.code = 2;\n    returnResult(result, callback);\n    return;\n  };\n\n  // step2\n  // 解释png或jpg\n  var colorlist = [];\n  if (info.format && info.format == 'JPG') {\n    try {\n      colorlist = await colorquant.getColorPallette(data, 'jpg', kMAX_COLOR);\n    }\n    catch(e) {\n      result.code = 3;\n      returnResult(result, callback);\n      return;\n    }\n  }\n  else if (info.format && info.format == 'PNG') {\n    try {\n      colorlist = await colorquant.getColorPallette(data, 'png', kMAX_COLOR);\n    }\n    catch(e) {\n\n      result.code = 4;\n      returnResult(result, callback);\n      return;\n    }\n  };\n\n  if (!colorlist || colorlist instanceof Array == false) {\n    result.code = 5;\n    returnResult(result, callback);\n    return;\n  }\n\n  // step3\n  // 二次处理颜色\n\n  try {\n    var res = filtercolors(colorlist,num);\n    if (!res) {\n      result.code = 7;\n      returnResult(result, callback);\n      return;\n    }\n    // 处理成功\n    result.code = 1;\n    result.color = res;\n  }\n  catch(e) {\n    result.code = 6;\n    returnResult(result, callback);\n    return;\n  }\n\n  returnResult(result, callback);\n  return;\n}\n\n\n\n"]}