Mxo New Bot Librarys/Depencens - Image Converter

For Mxo New Bot - Library/Depencens

此腳本不應該直接安裝,它是一個供其他腳本使用的函式庫。欲使用本函式庫,請在腳本 metadata 寫上: // @require https://update.gf.qytechs.cn/scripts/465117/1185559/Mxo%20New%20Bot%20LibrarysDepencens%20-%20Image%20Converter.js

  1. // ==UserScript==
  2. // @version 1.0
  3. // @author https://github.com/bababoyy
  4. // @license GPLv3
  5. // ==/UserScript==
  6. importScripts("https://gf.qytechs.cn/scripts/465119-mxo-new-bot-librarys-depencens-image-converter-dither/code/Mxo%20New%20Bot%20LibrarysDepencens%20-%20Image%20Converter%3EDither.js");
  7. const Colors = [
  8. { code: "0", rgb: [255, 255, 255] },
  9. { code: "1", rgb: [196, 196, 196] },
  10. { code: "2", rgb: [136, 136, 136] },
  11. { code: "3", rgb: [85, 85, 85] },
  12. { code: "4", rgb: [34, 34, 34] },
  13. { code: "5", rgb: [0, 0, 0] },
  14. { code: "6", rgb: [0, 102, 0] },
  15. { code: "7", rgb: [34, 177, 76] },
  16. { code: "8", rgb: [2, 190, 1] },
  17. { code: "10", rgb: [148, 224, 68] },
  18. { code: "11", rgb: [251, 255, 91] },
  19. { code: "12", rgb: [229, 217, 0] },
  20. { code: "13", rgb: [230, 190, 12] },
  21. { code: "14", rgb: [229, 149, 0] },
  22. { code: "15", rgb: [160, 106, 66] },
  23. { code: "16", rgb: [153, 83, 13] },
  24. { code: "17", rgb: [99, 60, 31] },
  25. { code: "18", rgb: [107, 0, 0] },
  26. { code: "19", rgb: [159, 0, 0] },
  27. { code: "20", rgb: [229, 0, 0] },
  28. { code: "22", rgb: [187, 79, 0] },
  29. { code: "23", rgb: [255, 117, 95] },
  30. { code: "24", rgb: [255, 196, 159] },
  31. { code: "25", rgb: [255, 223, 204] },
  32. { code: "26", rgb: [255, 167, 209] },
  33. { code: "27", rgb: [207, 110, 228] },
  34. { code: "28", rgb: [236, 8, 236] },
  35. { code: "29", rgb: [130, 0, 128] },
  36. { code: "31", rgb: [2, 7, 99] },
  37. { code: "32", rgb: [0, 0, 234] },
  38. { code: "33", rgb: [4, 75, 255] },
  39. { code: "34", rgb: [101, 131, 207] },
  40. { code: "35", rgb: [54, 186, 255] },
  41. { code: "36", rgb: [0, 131, 199] },
  42. { code: "37", rgb: [0, 211, 221] },
  43. ];
  44. function generatePixif(img, width) {
  45. let output = "";
  46. for (let i = 0; i < img.length; i += 4) {
  47. if ((i / 4) % width === 0 && i != 0) {
  48. output += "\\n";
  49. }
  50. /**
  51. * @type {RGB}
  52. */
  53. const colorInfo = {
  54. r: img[i],
  55. g: img[i + 1],
  56. b: img[i + 2],
  57. };
  58. /**
  59. * @type {number}
  60. */
  61. let color;
  62. // #MXOB0 's red value is 186
  63. if (colorInfo.r == 186) {
  64. color = 64;
  65. }
  66. for (let pixelColor of Colors) {
  67. if (
  68. pixelColor.rgb[0] == colorInfo.r &&
  69. pixelColor.rgb[1] == colorInfo.g &&
  70. pixelColor.rgb[2] == colorInfo.b
  71. ) {
  72. color = pixelColor.code;
  73. }
  74. }
  75. if (color == undefined) {
  76. color = 64;
  77. }
  78. output += String.fromCharCode("0".charCodeAt(0) + parseInt(color));
  79. }
  80. return output.split("\\n");
  81. }
  82. function lookThroughTransparentPixel(pixels) {
  83. var transparent_index = [];
  84. for (let i = 0; i < pixels.length; i += 4) {
  85. if (pixels[i] == 186 && pixels[i + 1] == 186 && pixels[i + 2] == 176) {
  86. transparent_index.push(i);
  87. }
  88. }
  89. return transparent_index;
  90. }
  91. onmessage = function (i) {
  92. var q = new RgbQuant({
  93. colors: 40,
  94. palette: Colors.map((x) => x.rgb),
  95. reIndex: true,
  96. dithKern: i.data.kernel,
  97. dithDelta: 0.05,
  98. useCache: false,
  99. });
  100.  
  101. console.log(i);
  102. var transparent_index = lookThroughTransparentPixel(i.data.img.data);
  103. console.time("Image load");
  104. q.sample(i.data.img.data);
  105. console.timeLog("Image load");
  106. var r = q.reduce(i.data.img.data);
  107. console.timeLog("Image load");
  108. for (let index of transparent_index) {
  109. r[index] = 186;
  110. r[index + 1] = 186;
  111. r[index + 2] = 176;
  112. }
  113. var pixif = generatePixif(r, i.data.img.width);
  114. console.timeEnd("Image load");
  115. postMessage([r, pixif]);
  116. };

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址