├── .gitignore ├── README.md ├── app.js ├── app.json ├── app.wxss ├── data └── colors.js ├── pages ├── download │ ├── index.js │ ├── index.json │ ├── index.wxml │ └── index.wxss ├── index │ ├── index.js │ ├── index.json │ ├── index.wxml │ └── index.wxss └── share │ ├── index.js │ ├── index.json │ ├── index.wxml │ └── index.wxss ├── project.config.json ├── sitemap.json └── utils ├── jinrishici.js └── util.js /.gitignore: -------------------------------------------------------------------------------- 1 | # Windows 2 | [Dd]esktop.ini 3 | Thumbs.db 4 | $RECYCLE.BIN/ 5 | 6 | # macOS 7 | .DS_Store 8 | .fseventsd 9 | .Spotlight-V100 10 | .TemporaryItems 11 | .Trashes 12 | 13 | # Node.js 14 | node_modules/ 15 | 16 | .idea/ 17 | /project.private.config.json 18 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # colors-mp 2 | 🇨🇳中国传统颜色小程序 3 | 4 | ## 灵感来源 5 | [GitHub: github.com/zerosoul/chinese-colors](https://github.com/zerosoul/chinese-colors) 6 | 7 | [Site: colors.ichuantong.cn](https://colors.ichuantong.cn) 8 | 9 | ## 小程序码 10 | 11 | 小程序码 12 | -------------------------------------------------------------------------------- /app.js: -------------------------------------------------------------------------------- 1 | //app.js 2 | App({ 3 | onLaunch: function () { 4 | wx.loadFontFace({ 5 | global: true, 6 | family: 'TChinese', 7 | source: 'url("https://colors.ichuantong.cn/font/chinese.font.woff")', 8 | scopes: ['webview', 'native'], 9 | success: console.log 10 | }) 11 | const updateManager = wx.getUpdateManager() 12 | updateManager.onCheckForUpdate(function (res) { 13 | // 请求完新版本信息的回调 14 | console.log(res.hasUpdate) 15 | }) 16 | updateManager.onUpdateReady(function () { 17 | wx.showModal({ 18 | title: '更新提示', 19 | content: '新版本已经准备好,是否重启应用?', 20 | success(res) { 21 | if (res.confirm) { 22 | // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启 23 | updateManager.applyUpdate() 24 | } 25 | } 26 | }) 27 | }) 28 | }, 29 | globalData: { 30 | } 31 | }) 32 | -------------------------------------------------------------------------------- /app.json: -------------------------------------------------------------------------------- 1 | { 2 | "lazyCodeLoading": "requiredComponents", 3 | "pages":[ 4 | "pages/index/index", 5 | "pages/share/index", 6 | "pages/download/index" 7 | ], 8 | "window":{ 9 | "backgroundTextStyle":"light", 10 | "navigationBarBackgroundColor": "#fff", 11 | "navigationBarTitleText": "国风色卡", 12 | "navigationBarTextStyle":"black" 13 | }, 14 | "style": "v2", 15 | "sitemapLocation": "sitemap.json" 16 | } 17 | -------------------------------------------------------------------------------- /app.wxss: -------------------------------------------------------------------------------- 1 | /**app.wxss**/ 2 | .container { 3 | box-sizing: border-box; 4 | height: 100vh; 5 | display: flex; 6 | } 7 | -------------------------------------------------------------------------------- /data/colors.js: -------------------------------------------------------------------------------- 1 | module.exports = [ 2 | { 3 | "name": "红", 4 | "hex": "#ffb3a7", 5 | "colors": [ 6 | { 7 | "id": "0-0", 8 | "hex": "#ffb3a7", 9 | "name": "粉红", 10 | "intro": "即浅红色。别称:妃色、杨妃色、湘妃色、妃红色", 11 | "figure": "flower.moon.png?o=0.8", 12 | "RGB": [ 13 | 255, 14 | 179, 15 | 167 16 | ], 17 | "CMYK": [ 18 | 0, 19 | 30, 20 | 35, 21 | 0 22 | ], 23 | "pinyin": "fěn hóng" 24 | }, 25 | { 26 | "id": "0-1", 27 | "hex": "#ed5736", 28 | "name": "妃色", 29 | "intro": "妃红色。古同\"绯\",粉红色。杨妃色湘妃色粉红皆同义。", 30 | "RGB": [ 31 | 237, 32 | 87, 33 | 54 34 | ], 35 | "CMYK": [ 36 | 0, 37 | 63, 38 | 77, 39 | 7 40 | ], 41 | "pinyin": "fēi sè" 42 | }, 43 | { 44 | "id": "0-2", 45 | "hex": "#f00056", 46 | "name": "品红", 47 | "intro": "比大红浅的红色(这里的\"品红\"估计是指的\"一品红\",是基于大红色系的,和现在我们印刷用色的\"品红M100\"不是一个概念)", 48 | "RGB": [ 49 | 240, 50 | 0, 51 | 86 52 | ], 53 | "CMYK": [ 54 | 0, 55 | 100, 56 | 64, 57 | 6 58 | ], 59 | "pinyin": "pǐn hóng" 60 | }, 61 | { 62 | "id": "0-3", 63 | "hex": "#f47983", 64 | "name": "桃红", 65 | "intro": "桃花的颜色,比粉红略鲜润的颜色。(不大于M70的色彩,有时可加入适量黄色)", 66 | "RGB": [ 67 | 244, 68 | 121, 69 | 131 70 | ], 71 | "CMYK": [ 72 | 0, 73 | 50, 74 | 46, 75 | 4 76 | ], 77 | "pinyin": "táo hóng" 78 | }, 79 | { 80 | "id": "0-4", 81 | "hex": "#db5a6b", 82 | "name": "海棠红", 83 | "intro": "淡紫红色、较桃红色深一些,是非常妩媚娇艳的颜色。", 84 | "figure": "girl.png?o=0.8", 85 | "RGB": [ 86 | 219, 87 | 90, 88 | 107 89 | ], 90 | "CMYK": [ 91 | 0, 92 | 59, 93 | 51, 94 | 14 95 | ], 96 | "pinyin": "hǎi táng hóng" 97 | }, 98 | { 99 | "id": "0-5", 100 | "hex": "#f20c00", 101 | "name": "石榴红", 102 | "intro": "石榴花的颜色,高色度和纯度的红色。", 103 | "RGB": [ 104 | 242, 105 | 12, 106 | 0 107 | ], 108 | "CMYK": [ 109 | 0, 110 | 95, 111 | 100, 112 | 5 113 | ], 114 | "pinyin": "shí liú hóng" 115 | }, 116 | { 117 | "id": "0-6", 118 | "hex": "#c93756", 119 | "name": "樱桃色", 120 | "intro": "鲜红色", 121 | "RGB": [ 122 | 201, 123 | 55, 124 | 86 125 | ], 126 | "CMYK": [ 127 | 0, 128 | 73, 129 | 57, 130 | 21 131 | ], 132 | "pinyin": "yīng táo sè" 133 | }, 134 | { 135 | "id": "0-7", 136 | "hex": "#f05654", 137 | "name": "银红", 138 | "intro": "银朱和粉红色颜料配成的颜色。多用来形容有光泽的各种红色,尤指有光泽浅红。", 139 | "RGB": [ 140 | 240, 141 | 86, 142 | 84 143 | ], 144 | "CMYK": [ 145 | 0, 146 | 64, 147 | 65, 148 | 6 149 | ], 150 | "pinyin": "yín hóng" 151 | }, 152 | { 153 | "id": "0-8", 154 | "hex": "#ff2121", 155 | "name": "大红", 156 | "intro": "正红色,三原色中的红,传统的中国红,又称绛色(RGB色中的R255系列明度)", 157 | "figure": "long.png?width=20", 158 | "RGB": [ 159 | 255, 160 | 33, 161 | 33 162 | ], 163 | "CMYK": [ 164 | 0, 165 | 87, 166 | 87, 167 | 0 168 | ], 169 | "pinyin": "dà hóng" 170 | }, 171 | { 172 | "id": "0-9", 173 | "hex": "#8c4356", 174 | "name": "绛紫", 175 | "intro": "紫中略带红的颜色", 176 | "figure": "fenyue.png", 177 | "RGB": [ 178 | 140, 179 | 67, 180 | 86 181 | ], 182 | "CMYK": [ 183 | 0, 184 | 52, 185 | 39, 186 | 45 187 | ], 188 | "pinyin": "jiàng zǐ" 189 | }, 190 | { 191 | "id": "0-10", 192 | "hex": "#c83c23", 193 | "name": "绯红", 194 | "intro": "艳丽的深红", 195 | "RGB": [ 196 | 200, 197 | 60, 198 | 35 199 | ], 200 | "CMYK": [ 201 | 0, 202 | 70, 203 | 83, 204 | 22 205 | ], 206 | "pinyin": "fēi hóng" 207 | }, 208 | { 209 | "id": "0-11", 210 | "hex": "#9d2933", 211 | "name": "胭脂", 212 | "intro": "1,女子装扮时用的胭脂的颜色。2,国画暗红色颜料", 213 | "RGB": [ 214 | 157, 215 | 41, 216 | 51 217 | ], 218 | "CMYK": [ 219 | 0, 220 | 74, 221 | 68, 222 | 38 223 | ], 224 | "pinyin": "yān zhī" 225 | }, 226 | { 227 | "id": "0-12", 228 | "hex": "#ff4c00", 229 | "name": "朱红", 230 | "intro": "朱砂的颜色,比大红活泼,也称铅朱朱色丹色(在YM对等的情况下,适量减少红色的成分就是该色的色彩系列感觉)", 231 | "RGB": [ 232 | 255, 233 | 76, 234 | 0 235 | ], 236 | "CMYK": [ 237 | 0, 238 | 70, 239 | 100, 240 | 0 241 | ], 242 | "pinyin": "zhū hóng" 243 | }, 244 | { 245 | "id": "0-13", 246 | "hex": "#ff4e20", 247 | "name": "丹", 248 | "intro": "丹砂的鲜艳红色", 249 | "RGB": [ 250 | 255, 251 | 78, 252 | 32 253 | ], 254 | "CMYK": [ 255 | 0, 256 | 69, 257 | 87, 258 | 0 259 | ], 260 | "pinyin": "dān" 261 | }, 262 | { 263 | "id": "0-14", 264 | "hex": "#f35336", 265 | "name": "彤", 266 | "intro": "赤色", 267 | "RGB": [ 268 | 243, 269 | 83, 270 | 54 271 | ], 272 | "CMYK": [ 273 | 0, 274 | 66, 275 | 78, 276 | 5 277 | ], 278 | "pinyin": "tóng" 279 | }, 280 | { 281 | "id": "0-15", 282 | "hex": "#cb3a56", 283 | "name": "茜色", 284 | "intro": "茜草染的色彩,呈深红色", 285 | "RGB": [ 286 | 203, 287 | 58, 288 | 86 289 | ], 290 | "CMYK": [ 291 | 0, 292 | 71, 293 | 58, 294 | 20 295 | ], 296 | "pinyin": "qiàn sè" 297 | }, 298 | { 299 | "id": "0-16", 300 | "hex": "#ff2d51", 301 | "name": "火红", 302 | "intro": "火焰的红色,赤色", 303 | "RGB": [ 304 | 255, 305 | 45, 306 | 81 307 | ], 308 | "CMYK": [ 309 | 0, 310 | 82, 311 | 68, 312 | 0 313 | ], 314 | "pinyin": "huǒ hóng" 315 | }, 316 | { 317 | "id": "0-17", 318 | "hex": "#c91f37", 319 | "name": "赫赤", 320 | "intro": "深红,火红。泛指赤色、火红色。", 321 | "RGB": [ 322 | 201, 323 | 31, 324 | 55 325 | ], 326 | "CMYK": [ 327 | 0, 328 | 85, 329 | 73, 330 | 21 331 | ], 332 | "pinyin": "hè chì" 333 | }, 334 | { 335 | "id": "0-18", 336 | "hex": "#ef7a82", 337 | "name": "嫣红", 338 | "intro": "鲜艳的红色", 339 | "figure": "jinyu.png?o=0.8", 340 | "RGB": [ 341 | 239, 342 | 122, 343 | 130 344 | ], 345 | "CMYK": [ 346 | 0, 347 | 49, 348 | 46, 349 | 6 350 | ], 351 | "pinyin": "yān hóng" 352 | }, 353 | { 354 | "id": "0-19", 355 | "hex": "#ff0097", 356 | "name": "洋红", 357 | "intro": "色橘红(这个色彩方向不太对,通常洋红指的是倾向于M100系列的红色,应该削弱黄色成分。)", 358 | "RGB": [ 359 | 255, 360 | 0, 361 | 151 362 | ], 363 | "CMYK": [ 364 | 0, 365 | 100, 366 | 41, 367 | 0 368 | ], 369 | "pinyin": "yáng hóng" 370 | }, 371 | { 372 | "id": "0-20", 373 | "hex": "#ff3300", 374 | "name": "炎", 375 | "intro": "引申为红色", 376 | "RGB": [ 377 | 255, 378 | 51, 379 | 0 380 | ], 381 | "CMYK": [ 382 | 0, 383 | 80, 384 | 100, 385 | 0 386 | ], 387 | "pinyin": "yán" 388 | }, 389 | { 390 | "id": "0-21", 391 | "hex": "#c3272b", 392 | "name": "赤", 393 | "intro": "本义火的颜色,即红色", 394 | "RGB": [ 395 | 195, 396 | 39, 397 | 43 398 | ], 399 | "CMYK": [ 400 | 0, 401 | 80, 402 | 78, 403 | 24 404 | ], 405 | "pinyin": "chì" 406 | }, 407 | { 408 | "id": "0-22", 409 | "hex": "#a98175", 410 | "name": "绾", 411 | "intro": "绛色;浅绛色", 412 | "figure": "luohong.png?position=top", 413 | "RGB": [ 414 | 169, 415 | 129, 416 | 117 417 | ], 418 | "CMYK": [ 419 | 0, 420 | 24, 421 | 31, 422 | 34 423 | ], 424 | "pinyin": "wǎn" 425 | }, 426 | { 427 | "id": "0-23", 428 | "hex": "#c32136", 429 | "name": "枣红", 430 | "intro": "即深红(色相不变,是深浅变化)", 431 | "RGB": [ 432 | 195, 433 | 33, 434 | 54 435 | ], 436 | "CMYK": [ 437 | 0, 438 | 83, 439 | 72, 440 | 24 441 | ], 442 | "pinyin": "zǎo hóng" 443 | }, 444 | { 445 | "id": "0-24", 446 | "hex": "#b36d61", 447 | "name": "檀", 448 | "intro": "浅红色,浅绛色", 449 | "RGB": [ 450 | 179, 451 | 109, 452 | 97 453 | ], 454 | "CMYK": [ 455 | 0, 456 | 39, 457 | 46, 458 | 30 459 | ], 460 | "pinyin": "tán" 461 | }, 462 | { 463 | "id": "0-25", 464 | "hex": "#be002f", 465 | "name": "殷红", 466 | "intro": "发黑的红色。", 467 | "RGB": [ 468 | 190, 469 | 0, 470 | 47 471 | ], 472 | "CMYK": [ 473 | 0, 474 | 100, 475 | 75, 476 | 25 477 | ], 478 | "pinyin": "yān hóng" 479 | }, 480 | { 481 | "id": "0-26", 482 | "hex": "#dc3023", 483 | "name": "酡红", 484 | "intro": "像饮酒后脸上泛现的红色,泛指脸红", 485 | "RGB": [ 486 | 220, 487 | 48, 488 | 35 489 | ], 490 | "CMYK": [ 491 | 0, 492 | 78, 493 | 84, 494 | 14 495 | ], 496 | "pinyin": "tuó hóng" 497 | }, 498 | { 499 | "id": "0-27", 500 | "hex": "#f9906f", 501 | "name": "酡颜", 502 | "intro": "饮酒脸红的样子。亦泛指脸红色", 503 | "figure": "meinv.png?o=0.9&width=18", 504 | "RGB": [ 505 | 249, 506 | 144, 507 | 111 508 | ], 509 | "CMYK": [ 510 | 0, 511 | 42, 512 | 55, 513 | 2 514 | ], 515 | "pinyin": "tuó yán" 516 | } 517 | ], 518 | "RGB": [ 519 | 255, 520 | 179, 521 | 167 522 | ], 523 | "id": 0 524 | }, 525 | { 526 | "name": "黄", 527 | "hex": "#fff143", 528 | "colors": [ 529 | { 530 | "id": "1-0", 531 | "hex": "#fff143", 532 | "name": "鹅黄", 533 | "intro": "淡黄色(鹅嘴的颜色,高明度微偏红黄色)", 534 | "figure": "huofenghuang.png", 535 | "RGB": [ 536 | 255, 537 | 241, 538 | 67 539 | ], 540 | "CMYK": [ 541 | 0, 542 | 5, 543 | 74, 544 | 0 545 | ], 546 | "pinyin": "é huáng" 547 | }, 548 | { 549 | "id": "1-1", 550 | "hex": "#faff72", 551 | "name": "鸭黄", 552 | "intro": "小鸭毛的黄色", 553 | "figure": "yellow.flower.png", 554 | "RGB": [ 555 | 250, 556 | 255, 557 | 114 558 | ], 559 | "CMYK": [ 560 | 2, 561 | 0, 562 | 55, 563 | 0 564 | ], 565 | "pinyin": "yā huáng" 566 | }, 567 | { 568 | "id": "1-2", 569 | "hex": "#eaff56", 570 | "name": "樱草色", 571 | "intro": "淡黄色", 572 | "RGB": [ 573 | 234, 574 | 255, 575 | 86 576 | ], 577 | "CMYK": [ 578 | 8, 579 | 0, 580 | 66, 581 | 0 582 | ], 583 | "pinyin": "yīng cǎo sè" 584 | }, 585 | { 586 | "id": "1-3", 587 | "hex": "#ffa631", 588 | "name": "杏黄", 589 | "intro": "成熟杏子的黄色(Y100M20~30感觉的色彩,比较常用且有浓郁中国味道)", 590 | "figure": "lianiao.png", 591 | "RGB": [ 592 | 255, 593 | 166, 594 | 49 595 | ], 596 | "CMYK": [ 597 | 0, 598 | 35, 599 | 81, 600 | 0 601 | ], 602 | "pinyin": "xìng huáng" 603 | }, 604 | { 605 | "id": "1-4", 606 | "hex": "#ff8c31", 607 | "name": "杏红", 608 | "intro": "成熟杏子偏红色的一种颜色", 609 | "RGB": [ 610 | 255, 611 | 140, 612 | 49 613 | ], 614 | "CMYK": [ 615 | 0, 616 | 45, 617 | 81, 618 | 0 619 | ], 620 | "pinyin": "xìng hóng" 621 | }, 622 | { 623 | "id": "1-5", 624 | "hex": "#ff8936", 625 | "name": "橘黄", 626 | "intro": "柑橘的黄色。", 627 | "figure": "liahudie.png", 628 | "RGB": [ 629 | 255, 630 | 137, 631 | 54 632 | ], 633 | "CMYK": [ 634 | 0, 635 | 46, 636 | 79, 637 | 0 638 | ], 639 | "pinyin": "jú huáng" 640 | }, 641 | { 642 | "id": "1-6", 643 | "hex": "#ffa400", 644 | "name": "橙黄", 645 | "intro": "同上。(Y100M50感觉的色彩,现代感比较强。广告上用得较多)", 646 | "RGB": [ 647 | 255, 648 | 164, 649 | 0 650 | ], 651 | "CMYK": [ 652 | 0, 653 | 36, 654 | 100, 655 | 0 656 | ], 657 | "pinyin": "chéng huáng" 658 | }, 659 | { 660 | "id": "1-7", 661 | "hex": "#ff7500", 662 | "name": "橘红", 663 | "intro": "柑橘皮所呈现的红色。", 664 | "RGB": [ 665 | 255, 666 | 117, 667 | 0 668 | ], 669 | "CMYK": [ 670 | 0, 671 | 54, 672 | 100, 673 | 0 674 | ], 675 | "pinyin": "jú hóng" 676 | }, 677 | { 678 | "id": "1-8", 679 | "hex": "#ffc773", 680 | "name": "姜黄", 681 | "intro": "中药名。别名黄姜。为姜科植物姜黄的根茎。又指人脸色不正,呈黄白色", 682 | "figure": "red.flower.png", 683 | "RGB": [ 684 | 255, 685 | 199, 686 | 115 687 | ], 688 | "CMYK": [ 689 | 0, 690 | 22, 691 | 55, 692 | 0 693 | ], 694 | "pinyin": "jiāng huáng" 695 | }, 696 | { 697 | "id": "1-9", 698 | "hex": "#f0c239", 699 | "name": "缃色", 700 | "intro": "浅黄色", 701 | "RGB": [ 702 | 240, 703 | 194, 704 | 57 705 | ], 706 | "CMYK": [ 707 | 0, 708 | 19, 709 | 76, 710 | 6 711 | ], 712 | "pinyin": "xiāng sè" 713 | }, 714 | { 715 | "id": "1-10", 716 | "hex": "#fa8c35", 717 | "name": "橙色", 718 | "intro": "界于红色和黄色之间的混合色", 719 | "RGB": [ 720 | 250, 721 | 140, 722 | 53 723 | ], 724 | "CMYK": [ 725 | 0, 726 | 44, 727 | 79, 728 | 2 729 | ], 730 | "pinyin": "chéng sè" 731 | }, 732 | { 733 | "id": "1-11", 734 | "hex": "#b35c44", 735 | "name": "茶色", 736 | "intro": "一种比栗色稍红的棕橙色至浅棕色", 737 | "RGB": [ 738 | 179, 739 | 92, 740 | 68 741 | ], 742 | "CMYK": [ 743 | 0, 744 | 49, 745 | 62, 746 | 30 747 | ], 748 | "pinyin": "chá sè" 749 | }, 750 | { 751 | "id": "1-12", 752 | "hex": "#a88462", 753 | "name": "驼色", 754 | "intro": "一种比咔叽色稍红而微淡、比肉桂色黄而稍淡和比核桃棕色黄而暗的浅黄棕色", 755 | "RGB": [ 756 | 168, 757 | 132, 758 | 98 759 | ], 760 | "CMYK": [ 761 | 0, 762 | 21, 763 | 42, 764 | 34 765 | ], 766 | "pinyin": "tuó sè" 767 | }, 768 | { 769 | "id": "1-13", 770 | "hex": "#c89b40", 771 | "name": "昏黄", 772 | "intro": "形容天色、灯光等呈幽暗的黄色", 773 | "RGB": [ 774 | 200, 775 | 155, 776 | 64 777 | ], 778 | "CMYK": [ 779 | 0, 780 | 23, 781 | 68, 782 | 22 783 | ], 784 | "pinyin": "hūn huáng" 785 | }, 786 | { 787 | "id": "1-14", 788 | "hex": "#60281e", 789 | "name": "栗色", 790 | "intro": "栗壳的颜色。即紫黑色", 791 | "RGB": [ 792 | 96, 793 | 40, 794 | 30 795 | ], 796 | "CMYK": [ 797 | 0, 798 | 58, 799 | 69, 800 | 62 801 | ], 802 | "pinyin": "lì sè" 803 | }, 804 | { 805 | "id": "1-15", 806 | "hex": "#b25d25", 807 | "name": "棕色", 808 | "intro": "棕毛的颜色,即褐色。1,在红色和黄色之间的任何一种颜色2,适中的暗淡和适度的浅黑。", 809 | "RGB": [ 810 | 178, 811 | 93, 812 | 37 813 | ], 814 | "CMYK": [ 815 | 0, 816 | 48, 817 | 79, 818 | 30 819 | ], 820 | "pinyin": "zōng sè" 821 | }, 822 | { 823 | "id": "1-16", 824 | "hex": "#827100", 825 | "name": "棕绿", 826 | "intro": "绿中泛棕色的一种颜色", 827 | "figure": "bottom.qunshan.png?width=100%", 828 | "RGB": [ 829 | 130, 830 | 113, 831 | 0 832 | ], 833 | "CMYK": [ 834 | 0, 835 | 13, 836 | 100, 837 | 49 838 | ], 839 | "pinyin": "zōng lǜ" 840 | }, 841 | { 842 | "id": "1-17", 843 | "hex": "#7c4b00", 844 | "name": "棕黑", 845 | "intro": "深棕色。", 846 | "RGB": [ 847 | 124, 848 | 75, 849 | 0 850 | ], 851 | "CMYK": [ 852 | 0, 853 | 40, 854 | 100, 855 | 51 856 | ], 857 | "pinyin": "zōng hēi" 858 | }, 859 | { 860 | "id": "1-18", 861 | "hex": "#9b4400", 862 | "name": "棕红", 863 | "intro": "红褐色。", 864 | "RGB": [ 865 | 155, 866 | 68, 867 | 0 868 | ], 869 | "CMYK": [ 870 | 0, 871 | 56, 872 | 100, 873 | 39 874 | ], 875 | "pinyin": "zōng hóng" 876 | }, 877 | { 878 | "id": "1-19", 879 | "hex": "#ae7000", 880 | "name": "棕黄", 881 | "intro": "浅褐色。", 882 | "RGB": [ 883 | 174, 884 | 112, 885 | 0 886 | ], 887 | "CMYK": [ 888 | 0, 889 | 36, 890 | 100, 891 | 32 892 | ], 893 | "pinyin": "zōng huáng" 894 | }, 895 | { 896 | "id": "1-20", 897 | "hex": "#9c5333", 898 | "name": "赭", 899 | "intro": "赤红如赭土的颜料,古人用以饰面", 900 | "RGB": [ 901 | 156, 902 | 83, 903 | 51 904 | ], 905 | "CMYK": [ 906 | 0, 907 | 47, 908 | 67, 909 | 39 910 | ], 911 | "pinyin": "zhě" 912 | }, 913 | { 914 | "id": "1-21", 915 | "hex": "#955539", 916 | "name": "赭色", 917 | "intro": "红色、赤红色。", 918 | "RGB": [ 919 | 149, 920 | 85, 921 | 57 922 | ], 923 | "CMYK": [ 924 | 0, 925 | 43, 926 | 62, 927 | 42 928 | ], 929 | "pinyin": "zhě sè" 930 | }, 931 | { 932 | "id": "1-22", 933 | "hex": "#ca6924", 934 | "name": "琥珀", 935 | "intro": "", 936 | "RGB": [ 937 | 202, 938 | 105, 939 | 36 940 | ], 941 | "CMYK": [ 942 | 0, 943 | 48, 944 | 82, 945 | 21 946 | ], 947 | "pinyin": "hǔ pò" 948 | }, 949 | { 950 | "id": "1-23", 951 | "hex": "#6e511e", 952 | "name": "褐色", 953 | "intro": "黄黑色", 954 | "RGB": [ 955 | 110, 956 | 81, 957 | 30 958 | ], 959 | "CMYK": [ 960 | 0, 961 | 26, 962 | 73, 963 | 57 964 | ], 965 | "pinyin": "hè sè" 966 | }, 967 | { 968 | "id": "1-24", 969 | "hex": "#d3b17d", 970 | "name": "枯黄", 971 | "intro": "干枯焦黄", 972 | "RGB": [ 973 | 211, 974 | 177, 975 | 125 976 | ], 977 | "CMYK": [ 978 | 0, 979 | 16, 980 | 41, 981 | 17 982 | ], 983 | "pinyin": "kū huáng" 984 | }, 985 | { 986 | "id": "1-25", 987 | "hex": "#e29c45", 988 | "name": "黄栌", 989 | "intro": "一种落叶灌木,花黄绿色,叶子秋天变成红色。木材黄色可做染料。", 990 | "figure": "heyue.png", 991 | "RGB": [ 992 | 226, 993 | 156, 994 | 69 995 | ], 996 | "CMYK": [ 997 | 0, 998 | 31, 999 | 69, 1000 | 11 1001 | ], 1002 | "pinyin": "huáng lú" 1003 | }, 1004 | { 1005 | "id": "1-26", 1006 | "hex": "#896c39", 1007 | "name": "秋色", 1008 | "intro": "1,中常橄榄棕色,它比一般橄榄棕色稍暗,且稍稍绿些。2,古以秋为金,其色白,故代指白色。", 1009 | "figure": "fenshu.png", 1010 | "RGB": [ 1011 | 137, 1012 | 108, 1013 | 57 1014 | ], 1015 | "CMYK": [ 1016 | 0, 1017 | 21, 1018 | 58, 1019 | 46 1020 | ], 1021 | "pinyin": "qiū sè" 1022 | }, 1023 | { 1024 | "id": "1-27", 1025 | "hex": "#d9b611", 1026 | "name": "秋香色", 1027 | "intro": "浅橄榄色浅黄绿色。(直接在Y中掺入k10~30可得到不同浓淡的该类色彩)", 1028 | "RGB": [ 1029 | 217, 1030 | 182, 1031 | 17 1032 | ], 1033 | "CMYK": [ 1034 | 0, 1035 | 16, 1036 | 92, 1037 | 15 1038 | ], 1039 | "pinyin": "qiū xiāng sè" 1040 | } 1041 | ], 1042 | "RGB": [ 1043 | 255, 1044 | 241, 1045 | 67 1046 | ], 1047 | "id": 1 1048 | }, 1049 | { 1050 | "name": "绿", 1051 | "hex": "#0aa344", 1052 | "colors": [ 1053 | { 1054 | "id": "2-0", 1055 | "hex": "#bddd22", 1056 | "name": "嫩绿", 1057 | "intro": "像刚长出的嫩叶的浅绿色", 1058 | "figure": "bottle.mei.png", 1059 | "RGB": [ 1060 | 189, 1061 | 221, 1062 | 34 1063 | ], 1064 | "CMYK": [ 1065 | 14, 1066 | 0, 1067 | 85, 1068 | 13 1069 | ], 1070 | "pinyin": "nèn lǜ" 1071 | }, 1072 | { 1073 | "id": "2-1", 1074 | "hex": "#c9dd22", 1075 | "name": "柳黄", 1076 | "intro": "像柳树芽那样的浅黄色", 1077 | "RGB": [ 1078 | 201, 1079 | 221, 1080 | 34 1081 | ], 1082 | "CMYK": [ 1083 | 9, 1084 | 0, 1085 | 85, 1086 | 13 1087 | ], 1088 | "pinyin": "liǔ huáng" 1089 | }, 1090 | { 1091 | "id": "2-2", 1092 | "hex": "#afdd22", 1093 | "name": "柳绿", 1094 | "intro": "柳叶的青绿色", 1095 | "RGB": [ 1096 | 175, 1097 | 221, 1098 | 34 1099 | ], 1100 | "CMYK": [ 1101 | 21, 1102 | 0, 1103 | 85, 1104 | 13 1105 | ], 1106 | "pinyin": "liǔ lǜ" 1107 | }, 1108 | { 1109 | "id": "2-3", 1110 | "hex": "#789262", 1111 | "name": "竹青", 1112 | "intro": "竹子的绿色", 1113 | "figure": "mozhu.png", 1114 | "RGB": [ 1115 | 120, 1116 | 146, 1117 | 98 1118 | ], 1119 | "CMYK": [ 1120 | 18, 1121 | 0, 1122 | 33, 1123 | 43 1124 | ], 1125 | "pinyin": "zhú qīng" 1126 | }, 1127 | { 1128 | "id": "2-4", 1129 | "hex": "#a3d900", 1130 | "name": "葱黄", 1131 | "intro": "黄绿色,嫩黄色", 1132 | "RGB": [ 1133 | 163, 1134 | 217, 1135 | 0 1136 | ], 1137 | "CMYK": [ 1138 | 25, 1139 | 0, 1140 | 100, 1141 | 15 1142 | ], 1143 | "pinyin": "cōng huáng" 1144 | }, 1145 | { 1146 | "id": "2-5", 1147 | "hex": "#9ed900", 1148 | "name": "葱绿", 1149 | "intro": "1:浅绿又略显微黄的颜色 2:草木青翠的样子", 1150 | "RGB": [ 1151 | 158, 1152 | 217, 1153 | 0 1154 | ], 1155 | "CMYK": [ 1156 | 27, 1157 | 0, 1158 | 100, 1159 | 15 1160 | ], 1161 | "pinyin": "cōng lǜ" 1162 | }, 1163 | { 1164 | "id": "2-6", 1165 | "hex": "#0eb83a", 1166 | "name": "葱青", 1167 | "intro": "淡淡的青绿色", 1168 | "RGB": [ 1169 | 14, 1170 | 184, 1171 | 58 1172 | ], 1173 | "CMYK": [ 1174 | 92, 1175 | 0, 1176 | 68, 1177 | 28 1178 | ], 1179 | "pinyin": "cōng qīng" 1180 | }, 1181 | { 1182 | "id": "2-7", 1183 | "hex": "#0eb840", 1184 | "name": "葱倩", 1185 | "intro": "青绿色", 1186 | "RGB": [ 1187 | 14, 1188 | 184, 1189 | 64 1190 | ], 1191 | "CMYK": [ 1192 | 92, 1193 | 0, 1194 | 65, 1195 | 28 1196 | ], 1197 | "pinyin": "cōng qiàn" 1198 | }, 1199 | { 1200 | "id": "2-8", 1201 | "hex": "#0aa344", 1202 | "name": "青葱", 1203 | "intro": "翠绿色,形容植物浓绿", 1204 | "RGB": [ 1205 | 10, 1206 | 163, 1207 | 68 1208 | ], 1209 | "CMYK": [ 1210 | 94, 1211 | 0, 1212 | 58, 1213 | 36 1214 | ], 1215 | "pinyin": "qīng cōng" 1216 | }, 1217 | { 1218 | "id": "2-9", 1219 | "hex": "#00bc12", 1220 | "name": "油绿", 1221 | "intro": "光润而浓绿的颜色。以上几种绿色都是明亮可爱的色彩。", 1222 | "RGB": [ 1223 | 0, 1224 | 188, 1225 | 18 1226 | ], 1227 | "CMYK": [ 1228 | 100, 1229 | 0, 1230 | 90, 1231 | 26 1232 | ], 1233 | "pinyin": "yóu lǜ" 1234 | }, 1235 | { 1236 | "id": "2-10", 1237 | "hex": "#0c8918", 1238 | "name": "绿沈", 1239 | "intro": "(沉)深绿", 1240 | "RGB": [ 1241 | 12, 1242 | 137, 1243 | 24 1244 | ], 1245 | "CMYK": [ 1246 | 91, 1247 | 0, 1248 | 82, 1249 | 46 1250 | ], 1251 | "pinyin": "lǜ shěn" 1252 | }, 1253 | { 1254 | "id": "2-11", 1255 | "hex": "#1bd1a5", 1256 | "name": "碧色", 1257 | "intro": "1,青绿色。2,青白色,浅蓝色。", 1258 | "figure": "hehua3.png", 1259 | "RGB": [ 1260 | 27, 1261 | 209, 1262 | 165 1263 | ], 1264 | "CMYK": [ 1265 | 87, 1266 | 0, 1267 | 21, 1268 | 18 1269 | ], 1270 | "pinyin": "bì sè" 1271 | }, 1272 | { 1273 | "id": "2-12", 1274 | "hex": "#2add9c", 1275 | "name": "碧绿", 1276 | "intro": "鲜艳的青绿色", 1277 | "RGB": [ 1278 | 42, 1279 | 221, 1280 | 156 1281 | ], 1282 | "CMYK": [ 1283 | 81, 1284 | 0, 1285 | 29, 1286 | 13 1287 | ], 1288 | "pinyin": "bì lǜ" 1289 | }, 1290 | { 1291 | "id": "2-13", 1292 | "hex": "#48c0a3", 1293 | "name": "青碧", 1294 | "intro": "鲜艳的青蓝色", 1295 | "figure": "guohua.hua.png", 1296 | "RGB": [ 1297 | 72, 1298 | 192, 1299 | 163 1300 | ], 1301 | "CMYK": [ 1302 | 63, 1303 | 0, 1304 | 15, 1305 | 25 1306 | ], 1307 | "pinyin": "qīng bì" 1308 | }, 1309 | { 1310 | "id": "2-14", 1311 | "hex": "#3de1ad", 1312 | "name": "翡翠色", 1313 | "intro": "1,翡翠鸟羽毛的青绿色。2,翡翠宝石的颜色。(C-Y≥30的系列色彩,多与白色配合以体现清新明丽感觉,与黑色配合效果不好该色个性柔弱,会被黑色牵制)", 1314 | "RGB": [ 1315 | 61, 1316 | 225, 1317 | 173 1318 | ], 1319 | "CMYK": [ 1320 | 73, 1321 | 0, 1322 | 23, 1323 | 12 1324 | ], 1325 | "pinyin": "fěi cuì sè" 1326 | }, 1327 | { 1328 | "id": "2-15", 1329 | "hex": "#40de5a", 1330 | "name": "草绿", 1331 | "intro": "绿而略黄的颜色。", 1332 | "RGB": [ 1333 | 64, 1334 | 222, 1335 | 90 1336 | ], 1337 | "CMYK": [ 1338 | 71, 1339 | 0, 1340 | 59, 1341 | 13 1342 | ], 1343 | "pinyin": "cǎo lǜ" 1344 | }, 1345 | { 1346 | "id": "2-16", 1347 | "hex": "#00e09e", 1348 | "name": "青色", 1349 | "intro": "1,一类带绿的蓝色,中等深浅,高度饱和。3,本义是蓝色。4,一般指深绿色。5,也指黑色。6,四色印刷中的一色。2,特指三补色中的一色。", 1350 | "figure": "hehuaqingting.png", 1351 | "RGB": [ 1352 | 0, 1353 | 224, 1354 | 158 1355 | ], 1356 | "CMYK": [ 1357 | 100, 1358 | 0, 1359 | 29, 1360 | 12 1361 | ], 1362 | "pinyin": "qīng sè" 1363 | }, 1364 | { 1365 | "id": "2-17", 1366 | "hex": "#00e079", 1367 | "name": "青翠", 1368 | "intro": "鲜绿", 1369 | "figure": "song.png", 1370 | "RGB": [ 1371 | 0, 1372 | 224, 1373 | 121 1374 | ], 1375 | "CMYK": [ 1376 | 100, 1377 | 0, 1378 | 46, 1379 | 12 1380 | ], 1381 | "pinyin": "qīng cuì" 1382 | }, 1383 | { 1384 | "id": "2-18", 1385 | "hex": "#c0ebd7", 1386 | "name": "青白", 1387 | "intro": "白而发青,尤指脸没有血色", 1388 | "figure": "xia.png", 1389 | "RGB": [ 1390 | 192, 1391 | 235, 1392 | 215 1393 | ], 1394 | "CMYK": [ 1395 | 18, 1396 | 0, 1397 | 9, 1398 | 8 1399 | ], 1400 | "pinyin": "qīng bái" 1401 | }, 1402 | { 1403 | "id": "2-19", 1404 | "hex": "#e0eee8", 1405 | "name": "鸭卵青", 1406 | "intro": "淡青灰色,极淡的青绿色", 1407 | "figure": "shuanghe2.png", 1408 | "RGB": [ 1409 | 224, 1410 | 238, 1411 | 232 1412 | ], 1413 | "CMYK": [ 1414 | 6, 1415 | 0, 1416 | 3, 1417 | 7 1418 | ], 1419 | "pinyin": "yā luǎn qīng" 1420 | }, 1421 | { 1422 | "id": "2-20", 1423 | "hex": "#bbcdc5", 1424 | "name": "蟹壳青", 1425 | "intro": "深灰绿色", 1426 | "figure": "guohua.hehua2.png", 1427 | "RGB": [ 1428 | 187, 1429 | 205, 1430 | 197 1431 | ], 1432 | "CMYK": [ 1433 | 9, 1434 | 0, 1435 | 4, 1436 | 20 1437 | ], 1438 | "pinyin": "xiè ké qīng" 1439 | }, 1440 | { 1441 | "id": "2-21", 1442 | "hex": "#424c50", 1443 | "name": "鸦青", 1444 | "intro": "鸦羽的颜色。即黑而带有紫绿光的颜色。", 1445 | "RGB": [ 1446 | 66, 1447 | 76, 1448 | 80 1449 | ], 1450 | "CMYK": [ 1451 | 18, 1452 | 5, 1453 | 0, 1454 | 69 1455 | ], 1456 | "pinyin": "yā qīng" 1457 | }, 1458 | { 1459 | "id": "2-22", 1460 | "hex": "#00e500", 1461 | "name": "绿色", 1462 | "intro": "1,在光谱中介于蓝与黄之间的那种颜色。2,本义青中带黄的颜色。3,引申为黑色,如绿鬓乌黑而光亮的鬓发。代指为青春年少的容颜。(现代色彩研究中,把绿色提高到了一个重要的位置,和其它红黄兰三原色并列研究,称做\"心理原色\"之一)", 1463 | "RGB": [ 1464 | 0, 1465 | 229, 1466 | 0 1467 | ], 1468 | "CMYK": [ 1469 | 100, 1470 | 0, 1471 | 100, 1472 | 10 1473 | ], 1474 | "pinyin": "lǜ sè" 1475 | }, 1476 | { 1477 | "id": "2-23", 1478 | "hex": "#9ed048", 1479 | "name": "豆绿", 1480 | "intro": "浅黄绿色", 1481 | "RGB": [ 1482 | 158, 1483 | 208, 1484 | 72 1485 | ], 1486 | "CMYK": [ 1487 | 24, 1488 | 0, 1489 | 65, 1490 | 18 1491 | ], 1492 | "pinyin": "dòu lǜ" 1493 | }, 1494 | { 1495 | "id": "2-24", 1496 | "hex": "#96ce54", 1497 | "name": "豆青", 1498 | "intro": "浅青绿色", 1499 | "figure": "right.bottom.huaping.png?width=8&o=0.8", 1500 | "RGB": [ 1501 | 150, 1502 | 206, 1503 | 84 1504 | ], 1505 | "CMYK": [ 1506 | 27, 1507 | 0, 1508 | 59, 1509 | 19 1510 | ], 1511 | "pinyin": "dòu qīng" 1512 | }, 1513 | { 1514 | "id": "2-25", 1515 | "hex": "#7bcfa6", 1516 | "name": "石青", 1517 | "intro": "淡灰绿色", 1518 | "figure": "right.bottom.honghehua.png", 1519 | "RGB": [ 1520 | 123, 1521 | 207, 1522 | 166 1523 | ], 1524 | "CMYK": [ 1525 | 41, 1526 | 0, 1527 | 20, 1528 | 19 1529 | ], 1530 | "pinyin": "shí qīng" 1531 | }, 1532 | { 1533 | "id": "2-26", 1534 | "hex": "#2edfa3", 1535 | "name": "玉色", 1536 | "intro": "玉的颜色,高雅的淡绿、淡青色", 1537 | "figure": "jinyu.png", 1538 | "RGB": [ 1539 | 46, 1540 | 223, 1541 | 163 1542 | ], 1543 | "CMYK": [ 1544 | 79, 1545 | 0, 1546 | 27, 1547 | 13 1548 | ], 1549 | "pinyin": "yù sè" 1550 | }, 1551 | { 1552 | "id": "2-27", 1553 | "hex": "#7fecad", 1554 | "name": "缥", 1555 | "intro": "绿色而微白", 1556 | "figure": "right.bottom.hongmujin.png", 1557 | "RGB": [ 1558 | 127, 1559 | 236, 1560 | 173 1561 | ], 1562 | "CMYK": [ 1563 | 46, 1564 | 0, 1565 | 27, 1566 | 7 1567 | ], 1568 | "pinyin": "piǎo" 1569 | }, 1570 | { 1571 | "id": "2-28", 1572 | "hex": "#a4e2c6", 1573 | "name": "艾绿", 1574 | "intro": "艾草的颜色。偏苍白的绿色", 1575 | "figure": "yunshan.png", 1576 | "RGB": [ 1577 | 164, 1578 | 226, 1579 | 198 1580 | ], 1581 | "CMYK": [ 1582 | 27, 1583 | 0, 1584 | 12, 1585 | 11 1586 | ], 1587 | "pinyin": "ài lǜ" 1588 | }, 1589 | { 1590 | "id": "2-29", 1591 | "hex": "#21a675", 1592 | "name": "松柏绿", 1593 | "intro": "经冬松柏叶的深绿", 1594 | "figure": "guohua.hehua.png", 1595 | "RGB": [ 1596 | 33, 1597 | 166, 1598 | 117 1599 | ], 1600 | "CMYK": [ 1601 | 80, 1602 | 0, 1603 | 30, 1604 | 35 1605 | ], 1606 | "pinyin": "sōng bǎi lǜ" 1607 | }, 1608 | { 1609 | "id": "2-30", 1610 | "hex": "#057748", 1611 | "name": "松花绿", 1612 | "intro": "亦作\"松花\"、\"松绿\"。偏黑的深绿色,墨绿。", 1613 | "figure": "hudie.png?width=10", 1614 | "RGB": [ 1615 | 5, 1616 | 119, 1617 | 72 1618 | ], 1619 | "CMYK": [ 1620 | 96, 1621 | 0, 1622 | 39, 1623 | 53 1624 | ], 1625 | "pinyin": "sōng huā lǜ" 1626 | }, 1627 | { 1628 | "id": "2-31", 1629 | "hex": "#bce672", 1630 | "name": "松花色", 1631 | "intro": "浅黄绿色。(松树花粉的颜色)《红楼梦》中提及松花配桃红为娇艳", 1632 | "RGB": [ 1633 | 188, 1634 | 230, 1635 | 114 1636 | ], 1637 | "CMYK": [ 1638 | 18, 1639 | 0, 1640 | 50, 1641 | 10 1642 | ], 1643 | "pinyin": "sōng huā sè" 1644 | } 1645 | ], 1646 | "RGB": [ 1647 | 10, 1648 | 163, 1649 | 68 1650 | ], 1651 | "id": 2 1652 | }, 1653 | { 1654 | "name": "蓝", 1655 | "hex": "#44cef6", 1656 | "colors": [ 1657 | { 1658 | "id": "3-0", 1659 | "hex": "#44cef6", 1660 | "name": "蓝", 1661 | "intro": "三原色的一种。像晴天天空的颜色(这里的蓝色指的不是RGB色彩中的B,而是CMY色彩中的C)", 1662 | "RGB": [ 1663 | 68, 1664 | 206, 1665 | 246 1666 | ], 1667 | "CMYK": [ 1668 | 72, 1669 | 16, 1670 | 0, 1671 | 4 1672 | ], 1673 | "pinyin": "lán" 1674 | }, 1675 | { 1676 | "id": "3-1", 1677 | "hex": "#177cb0", 1678 | "name": "靛青", 1679 | "intro": "也叫\"蓝靛\"。用蓼蓝叶泡水调和与石灰沉淀所得的蓝色染料。呈深蓝绿色(靛,发音dian四声,有些地方将蓝墨水称为\"靛水\"或者\"兰靛水\")", 1680 | "figure": "hehua.caise.png?width=17&o=0.7", 1681 | "RGB": [ 1682 | 23, 1683 | 124, 1684 | 176 1685 | ], 1686 | "CMYK": [ 1687 | 87, 1688 | 30, 1689 | 0, 1690 | 31 1691 | ], 1692 | "pinyin": "diàn qīng" 1693 | }, 1694 | { 1695 | "id": "3-2", 1696 | "hex": "#065279", 1697 | "name": "靛蓝", 1698 | "intro": "由植物(例如靛蓝或菘蓝属植物)得到的蓝色染料", 1699 | "figure": "moon.png", 1700 | "RGB": [ 1701 | 6, 1702 | 82, 1703 | 121 1704 | ], 1705 | "CMYK": [ 1706 | 95, 1707 | 32, 1708 | 0, 1709 | 53 1710 | ], 1711 | "pinyin": "diàn lán" 1712 | }, 1713 | { 1714 | "id": "3-3", 1715 | "hex": "#3eede7", 1716 | "name": "碧蓝", 1717 | "intro": "青蓝色", 1718 | "figure": "wave.png?width=100%", 1719 | "RGB": [ 1720 | 62, 1721 | 237, 1722 | 231 1723 | ], 1724 | "CMYK": [ 1725 | 74, 1726 | 0, 1727 | 3, 1728 | 7 1729 | ], 1730 | "pinyin": "bì lán" 1731 | }, 1732 | { 1733 | "id": "3-4", 1734 | "hex": "#70f3ff", 1735 | "name": "蔚蓝", 1736 | "intro": "类似晴朗天空的颜色的一种蓝色", 1737 | "figure": "he.png", 1738 | "RGB": [ 1739 | 112, 1740 | 243, 1741 | 255 1742 | ], 1743 | "CMYK": [ 1744 | 56, 1745 | 5, 1746 | 0, 1747 | 0 1748 | ], 1749 | "pinyin": "wèi lán" 1750 | }, 1751 | { 1752 | "id": "3-5", 1753 | "hex": "#4b5cc4", 1754 | "name": "宝蓝", 1755 | "intro": "鲜艳明亮的蓝色(英文中为RoyalBlue即皇家蓝色,是皇室选用的色彩,多和小面积纯黄色(金色)配合使用。)", 1756 | "RGB": [ 1757 | 75, 1758 | 92, 1759 | 196 1760 | ], 1761 | "CMYK": [ 1762 | 62, 1763 | 53, 1764 | 0, 1765 | 23 1766 | ], 1767 | "pinyin": "bǎo lán" 1768 | }, 1769 | { 1770 | "id": "3-6", 1771 | "hex": "#a1afc9", 1772 | "name": "蓝灰色", 1773 | "intro": "一种近于灰略带蓝的深灰色", 1774 | "figure": "left.bottom.mutong.png", 1775 | "RGB": [ 1776 | 161, 1777 | 175, 1778 | 201 1779 | ], 1780 | "CMYK": [ 1781 | 20, 1782 | 13, 1783 | 0, 1784 | 21 1785 | ], 1786 | "pinyin": "lán huī sè" 1787 | }, 1788 | { 1789 | "id": "3-7", 1790 | "hex": "#2e4e7e", 1791 | "name": "藏青", 1792 | "intro": "蓝而近黑", 1793 | "RGB": [ 1794 | 46, 1795 | 78, 1796 | 126 1797 | ], 1798 | "CMYK": [ 1799 | 63, 1800 | 38, 1801 | 0, 1802 | 51 1803 | ], 1804 | "pinyin": "zàng qīng" 1805 | }, 1806 | { 1807 | "id": "3-8", 1808 | "hex": "#3b2e7e", 1809 | "name": "藏蓝", 1810 | "intro": "蓝里略透红色", 1811 | "RGB": [ 1812 | 59, 1813 | 46, 1814 | 126 1815 | ], 1816 | "CMYK": [ 1817 | 53, 1818 | 63, 1819 | 0, 1820 | 51 1821 | ], 1822 | "pinyin": "zàng lán" 1823 | }, 1824 | { 1825 | "id": "3-9", 1826 | "hex": "#4a4266", 1827 | "name": "黛", 1828 | "intro": "别名:黛色,黛螺。青黑色的颜料。古代女子用以画眉。绘画或画眉所使用的青黑色颜料,代指女子眉妩。", 1829 | "RGB": [ 1830 | 74, 1831 | 66, 1832 | 102 1833 | ], 1834 | "CMYK": [ 1835 | 27, 1836 | 35, 1837 | 0, 1838 | 60 1839 | ], 1840 | "pinyin": "dài" 1841 | }, 1842 | { 1843 | "id": "3-10", 1844 | "hex": "#426666", 1845 | "name": "黛绿", 1846 | "intro": "墨绿", 1847 | "figure": "honghua.png", 1848 | "RGB": [ 1849 | 66, 1850 | 102, 1851 | 102 1852 | ], 1853 | "CMYK": [ 1854 | 35, 1855 | 0, 1856 | 0, 1857 | 60 1858 | ], 1859 | "pinyin": "dài lǜ" 1860 | }, 1861 | { 1862 | "id": "3-11", 1863 | "hex": "#425066", 1864 | "name": "黛蓝", 1865 | "intro": "深蓝色", 1866 | "figure": "left.mei.png?position=left", 1867 | "RGB": [ 1868 | 66, 1869 | 80, 1870 | 102 1871 | ], 1872 | "CMYK": [ 1873 | 35, 1874 | 22, 1875 | 0, 1876 | 60 1877 | ], 1878 | "pinyin": "dài lán" 1879 | }, 1880 | { 1881 | "id": "3-12", 1882 | "hex": "#574266", 1883 | "name": "黛紫", 1884 | "intro": "深紫色", 1885 | "RGB": [ 1886 | 87, 1887 | 66, 1888 | 102 1889 | ], 1890 | "CMYK": [ 1891 | 15, 1892 | 35, 1893 | 0, 1894 | 60 1895 | ], 1896 | "pinyin": "dài zǐ" 1897 | }, 1898 | { 1899 | "id": "3-13", 1900 | "hex": "#8d4bbb", 1901 | "name": "紫色", 1902 | "intro": "蓝和红组成的颜色。古人以紫为祥瑞的颜色。代指与帝王、皇宫有关的事物", 1903 | "figure": "right.bottom.qunshan.png", 1904 | "RGB": [ 1905 | 141, 1906 | 75, 1907 | 187 1908 | ], 1909 | "CMYK": [ 1910 | 25, 1911 | 60, 1912 | 0, 1913 | 27 1914 | ], 1915 | "pinyin": "zǐ sè" 1916 | }, 1917 | { 1918 | "id": "3-14", 1919 | "hex": "#815463", 1920 | "name": "紫酱", 1921 | "intro": "浑浊的紫色", 1922 | "RGB": [ 1923 | 129, 1924 | 84, 1925 | 99 1926 | ], 1927 | "CMYK": [ 1928 | 0, 1929 | 35, 1930 | 23, 1931 | 49 1932 | ], 1933 | "pinyin": "zǐ jiàng" 1934 | }, 1935 | { 1936 | "id": "3-15", 1937 | "hex": "#815476", 1938 | "name": "酱紫", 1939 | "intro": "紫中略带红的颜色", 1940 | "RGB": [ 1941 | 129, 1942 | 84, 1943 | 118 1944 | ], 1945 | "CMYK": [ 1946 | 0, 1947 | 35, 1948 | 9, 1949 | 49 1950 | ], 1951 | "pinyin": "jiàng zǐ" 1952 | }, 1953 | { 1954 | "id": "3-16", 1955 | "hex": "#4c221b", 1956 | "name": "紫檀", 1957 | "intro": "檀木的颜色,也称乌檀色乌木色", 1958 | "RGB": [ 1959 | 76, 1960 | 34, 1961 | 27 1962 | ], 1963 | "CMYK": [ 1964 | 0, 1965 | 55, 1966 | 64, 1967 | 70 1968 | ], 1969 | "pinyin": "zǐ tán" 1970 | }, 1971 | { 1972 | "id": "3-17", 1973 | "hex": "#003371", 1974 | "name": "绀青绀紫", 1975 | "intro": "纯度较低的深紫色", 1976 | "RGB": [ 1977 | 0, 1978 | 51, 1979 | 113 1980 | ], 1981 | "CMYK": [ 1982 | 100, 1983 | 55, 1984 | 0, 1985 | 56 1986 | ], 1987 | "pinyin": "gàn qīng gàn zǐ" 1988 | }, 1989 | { 1990 | "id": "3-18", 1991 | "hex": "#56004f", 1992 | "name": "紫棠", 1993 | "intro": "黑红色", 1994 | "RGB": [ 1995 | 86, 1996 | 0, 1997 | 79 1998 | ], 1999 | "CMYK": [ 2000 | 0, 2001 | 100, 2002 | 8, 2003 | 66 2004 | ], 2005 | "pinyin": "zǐ táng" 2006 | }, 2007 | { 2008 | "id": "3-19", 2009 | "hex": "#801dae", 2010 | "name": "青莲", 2011 | "intro": "偏蓝的紫色", 2012 | "RGB": [ 2013 | 128, 2014 | 29, 2015 | 174 2016 | ], 2017 | "CMYK": [ 2018 | 26, 2019 | 83, 2020 | 0, 2021 | 32 2022 | ], 2023 | "pinyin": "qīng lián" 2024 | }, 2025 | { 2026 | "id": "3-20", 2027 | "hex": "#4c8dae", 2028 | "name": "群青", 2029 | "intro": "深蓝色", 2030 | "figure": "meihua.png", 2031 | "RGB": [ 2032 | 76, 2033 | 141, 2034 | 174 2035 | ], 2036 | "CMYK": [ 2037 | 56, 2038 | 19, 2039 | 0, 2040 | 32 2041 | ], 2042 | "pinyin": "qún qīng" 2043 | }, 2044 | { 2045 | "id": "3-21", 2046 | "hex": "#b0a4e3", 2047 | "name": "雪青", 2048 | "intro": "浅蓝紫色", 2049 | "figure": "mujin.png", 2050 | "RGB": [ 2051 | 176, 2052 | 164, 2053 | 227 2054 | ], 2055 | "CMYK": [ 2056 | 22, 2057 | 28, 2058 | 0, 2059 | 11 2060 | ], 2061 | "pinyin": "xuě qīng" 2062 | }, 2063 | { 2064 | "id": "3-22", 2065 | "hex": "#cca4e3", 2066 | "name": "丁香色", 2067 | "intro": "紫丁香的颜色,浅浅的紫色,很娇柔淡雅的色彩", 2068 | "figure": "huaniao.png", 2069 | "RGB": [ 2070 | 204, 2071 | 164, 2072 | 227 2073 | ], 2074 | "CMYK": [ 2075 | 10, 2076 | 28, 2077 | 0, 2078 | 11 2079 | ], 2080 | "pinyin": "dīng xiāng sè" 2081 | }, 2082 | { 2083 | "id": "3-23", 2084 | "hex": "#edd1d8", 2085 | "name": "藕色", 2086 | "intro": "浅灰而略带红的颜色", 2087 | "figure": "jianzhi.png?width=20&opacity=0.6", 2088 | "RGB": [ 2089 | 237, 2090 | 209, 2091 | 216 2092 | ], 2093 | "CMYK": [ 2094 | 0, 2095 | 12, 2096 | 9, 2097 | 7 2098 | ], 2099 | "pinyin": "ǒu sè" 2100 | }, 2101 | { 2102 | "id": "3-24", 2103 | "hex": "#e4c6d0", 2104 | "name": "藕荷色", 2105 | "intro": "浅紫而略带红的颜色", 2106 | "figure": "meinv2.png", 2107 | "RGB": [ 2108 | 228, 2109 | 198, 2110 | 208 2111 | ], 2112 | "CMYK": [ 2113 | 0, 2114 | 13, 2115 | 9, 2116 | 11 2117 | ], 2118 | "pinyin": "ǒu hé sè" 2119 | } 2120 | ], 2121 | "RGB": [ 2122 | 68, 2123 | 206, 2124 | 246 2125 | ], 2126 | "id": 3 2127 | }, 2128 | { 2129 | "name": "苍", 2130 | "hex": "#75878a", 2131 | "colors": [ 2132 | { 2133 | "id": "4-0", 2134 | "hex": "#75878a", 2135 | "name": "苍色", 2136 | "intro": "即各种颜色掺入黑色后的颜色", 2137 | "figure": "qunshan.png?width=100%", 2138 | "RGB": [ 2139 | 117, 2140 | 135, 2141 | 138 2142 | ], 2143 | "CMYK": [ 2144 | 15, 2145 | 2, 2146 | 0, 2147 | 46 2148 | ], 2149 | "pinyin": "cāng sè" 2150 | }, 2151 | { 2152 | "id": "4-1", 2153 | "hex": "#519a73", 2154 | "name": "苍翠", 2155 | "intro": "", 2156 | "figure": "lvzhu.png?width=18", 2157 | "RGB": [ 2158 | 81, 2159 | 154, 2160 | 115 2161 | ], 2162 | "CMYK": [ 2163 | 47, 2164 | 0, 2165 | 25, 2166 | 40 2167 | ], 2168 | "pinyin": "cāng cuì" 2169 | }, 2170 | { 2171 | "id": "4-2", 2172 | "hex": "#a29b7c", 2173 | "name": "苍黄", 2174 | "intro": "", 2175 | "figure": "guilinshanshui.png", 2176 | "RGB": [ 2177 | 162, 2178 | 155, 2179 | 124 2180 | ], 2181 | "CMYK": [ 2182 | 0, 2183 | 4, 2184 | 23, 2185 | 36 2186 | ], 2187 | "pinyin": "cāng huáng" 2188 | }, 2189 | { 2190 | "id": "4-3", 2191 | "hex": "#7397ab", 2192 | "name": "苍青", 2193 | "intro": "", 2194 | "figure": "liangduohua.png?width=12", 2195 | "RGB": [ 2196 | 115, 2197 | 151, 2198 | 171 2199 | ], 2200 | "CMYK": [ 2201 | 33, 2202 | 12, 2203 | 0, 2204 | 33 2205 | ], 2206 | "pinyin": "cāng qīng" 2207 | }, 2208 | { 2209 | "id": "4-4", 2210 | "hex": "#395260", 2211 | "name": "苍黑", 2212 | "intro": "", 2213 | "figure": "sundown.png", 2214 | "RGB": [ 2215 | 57, 2216 | 82, 2217 | 96 2218 | ], 2219 | "CMYK": [ 2220 | 41, 2221 | 15, 2222 | 0, 2223 | 62 2224 | ], 2225 | "pinyin": "cāng hēi" 2226 | }, 2227 | { 2228 | "id": "4-5", 2229 | "hex": "#d1d9e0", 2230 | "name": "苍白", 2231 | "intro": "准确的说是掺入不同灰度级别的灰色", 2232 | "figure": "fanchuan.png", 2233 | "RGB": [ 2234 | 209, 2235 | 217, 2236 | 224 2237 | ], 2238 | "CMYK": [ 2239 | 7, 2240 | 3, 2241 | 0, 2242 | 12 2243 | ], 2244 | "pinyin": "cāng bái" 2245 | } 2246 | ], 2247 | "RGB": [ 2248 | 117, 2249 | 135, 2250 | 138 2251 | ], 2252 | "id": 4 2253 | }, 2254 | { 2255 | "name": "水", 2256 | "hex": "#d2f0f4", 2257 | "colors": [ 2258 | { 2259 | "id": "5-0", 2260 | "hex": "#88ada6", 2261 | "name": "水色", 2262 | "intro": "", 2263 | "figure": "hehuayu.png?width=16", 2264 | "RGB": [ 2265 | 136, 2266 | 173, 2267 | 166 2268 | ], 2269 | "CMYK": [ 2270 | 21, 2271 | 0, 2272 | 4, 2273 | 32 2274 | ], 2275 | "pinyin": "shuǐ sè" 2276 | }, 2277 | { 2278 | "id": "5-1", 2279 | "hex": "#f3d3e7", 2280 | "name": "水红", 2281 | "intro": "", 2282 | "figure": "hehua2.png?width=18", 2283 | "RGB": [ 2284 | 243, 2285 | 211, 2286 | 231 2287 | ], 2288 | "CMYK": [ 2289 | 0, 2290 | 13, 2291 | 5, 2292 | 5 2293 | ], 2294 | "pinyin": "shuǐ hóng" 2295 | }, 2296 | { 2297 | "id": "5-2", 2298 | "hex": "#d4f2e7", 2299 | "name": "水绿", 2300 | "intro": "", 2301 | "figure": "yu.png?width=17", 2302 | "RGB": [ 2303 | 212, 2304 | 242, 2305 | 231 2306 | ], 2307 | "CMYK": [ 2308 | 12, 2309 | 0, 2310 | 5, 2311 | 5 2312 | ], 2313 | "pinyin": "shuǐ lǜ" 2314 | }, 2315 | { 2316 | "id": "5-3", 2317 | "hex": "#d2f0f4", 2318 | "name": "水蓝", 2319 | "intro": "", 2320 | "figure": "moon.png?width=18", 2321 | "RGB": [ 2322 | 210, 2323 | 240, 2324 | 244 2325 | ], 2326 | "CMYK": [ 2327 | 14, 2328 | 2, 2329 | 0, 2330 | 4 2331 | ], 2332 | "pinyin": "shuǐ lán" 2333 | }, 2334 | { 2335 | "id": "5-4", 2336 | "hex": "#d3e0f3", 2337 | "name": "淡青", 2338 | "intro": "", 2339 | "figure": "huaping.png?width=18", 2340 | "RGB": [ 2341 | 211, 2342 | 224, 2343 | 243 2344 | ], 2345 | "CMYK": [ 2346 | 13, 2347 | 8, 2348 | 0, 2349 | 5 2350 | ], 2351 | "pinyin": "dàn qīng" 2352 | }, 2353 | { 2354 | "id": "5-5", 2355 | "hex": "#30dff3", 2356 | "name": "湖蓝", 2357 | "intro": "", 2358 | "figure": "shuanghe.png", 2359 | "RGB": [ 2360 | 48, 2361 | 223, 2362 | 243 2363 | ], 2364 | "CMYK": [ 2365 | 80, 2366 | 8, 2367 | 0, 2368 | 5 2369 | ], 2370 | "pinyin": "hú lán" 2371 | }, 2372 | { 2373 | "id": "5-6", 2374 | "hex": "#25f8cb", 2375 | "name": "湖绿", 2376 | "intro": "皆是浅色。深色淡色,颜色深的或浅的,不再一一列出。", 2377 | "figure": "hehua.caise.png", 2378 | "RGB": [ 2379 | 37, 2380 | 248, 2381 | 203 2382 | ], 2383 | "CMYK": [ 2384 | 85, 2385 | 0, 2386 | 18, 2387 | 3 2388 | ], 2389 | "pinyin": "hú lǜ" 2390 | } 2391 | ], 2392 | "RGB": [ 2393 | 210, 2394 | 240, 2395 | 244 2396 | ], 2397 | "id": 5 2398 | }, 2399 | { 2400 | "name": "灰白", 2401 | "hex": "#f0f0f4", 2402 | "colors": [ 2403 | { 2404 | "id": "6-0", 2405 | "hex": "#ffffff", 2406 | "name": "精白", 2407 | "intro": "纯白,洁白,净白,粉白。", 2408 | "figure": "meihua.shuimo.png", 2409 | "RGB": [ 2410 | 255, 2411 | 255, 2412 | 255 2413 | ], 2414 | "CMYK": [ 2415 | 0, 2416 | 0, 2417 | 0, 2418 | 0 2419 | ], 2420 | "pinyin": "jīng bái" 2421 | }, 2422 | { 2423 | "id": "6-1", 2424 | "hex": "#fffbf0", 2425 | "name": "象牙白", 2426 | "intro": "乳白色", 2427 | "figure": "pomo.png", 2428 | "RGB": [ 2429 | 255, 2430 | 251, 2431 | 240 2432 | ], 2433 | "CMYK": [ 2434 | 0, 2435 | 2, 2436 | 6, 2437 | 0 2438 | ], 2439 | "pinyin": "xiàng yá bái" 2440 | }, 2441 | { 2442 | "id": "6-2", 2443 | "hex": "#f2fdff", 2444 | "name": "雪白", 2445 | "intro": "如雪般洁白", 2446 | "figure": "meihua.pink.png", 2447 | "RGB": [ 2448 | 242, 2449 | 253, 2450 | 255 2451 | ], 2452 | "CMYK": [ 2453 | 5, 2454 | 1, 2455 | 0, 2456 | 0 2457 | ], 2458 | "pinyin": "xuě bái" 2459 | }, 2460 | { 2461 | "id": "6-3", 2462 | "hex": "#d6ecf0", 2463 | "name": "月白", 2464 | "intro": "淡蓝色", 2465 | "figure": "fenhua.png", 2466 | "RGB": [ 2467 | 214, 2468 | 236, 2469 | 240 2470 | ], 2471 | "CMYK": [ 2472 | 11, 2473 | 2, 2474 | 0, 2475 | 6 2476 | ], 2477 | "pinyin": "yuè bái" 2478 | }, 2479 | { 2480 | "id": "6-4", 2481 | "hex": "#f2ecde", 2482 | "name": "缟", 2483 | "intro": "白色", 2484 | "figure": "meihua.pink.png", 2485 | "RGB": [ 2486 | 242, 2487 | 236, 2488 | 222 2489 | ], 2490 | "CMYK": [ 2491 | 0, 2492 | 2, 2493 | 8, 2494 | 5 2495 | ], 2496 | "pinyin": "gǎo" 2497 | }, 2498 | { 2499 | "id": "6-5", 2500 | "hex": "#e0f0e9", 2501 | "name": "素", 2502 | "intro": "白色,无色", 2503 | "figure": "qunshan.png?width=100%", 2504 | "RGB": [ 2505 | 224, 2506 | 240, 2507 | 233 2508 | ], 2509 | "CMYK": [ 2510 | 7, 2511 | 0, 2512 | 3, 2513 | 6 2514 | ], 2515 | "pinyin": "sù" 2516 | }, 2517 | { 2518 | "id": "6-6", 2519 | "hex": "#f3f9f1", 2520 | "name": "荼白", 2521 | "intro": "如荼之白色", 2522 | "figure": "ddh.png?width=16", 2523 | "RGB": [ 2524 | 243, 2525 | 249, 2526 | 241 2527 | ], 2528 | "CMYK": [ 2529 | 2, 2530 | 0, 2531 | 3, 2532 | 2 2533 | ], 2534 | "pinyin": "tú bái" 2535 | }, 2536 | { 2537 | "id": "6-7", 2538 | "hex": "#e9f1f6", 2539 | "name": "霜色", 2540 | "intro": "白霜的颜色。", 2541 | "figure": "cao.png", 2542 | "RGB": [ 2543 | 233, 2544 | 241, 2545 | 246 2546 | ], 2547 | "CMYK": [ 2548 | 5, 2549 | 2, 2550 | 0, 2551 | 4 2552 | ], 2553 | "pinyin": "shuāng sè" 2554 | }, 2555 | { 2556 | "id": "6-8", 2557 | "hex": "#c2ccd0", 2558 | "name": "花白", 2559 | "intro": "白色和黑色混杂的。斑白的夹杂有灰色的白", 2560 | "figure": "chuan.png", 2561 | "RGB": [ 2562 | 194, 2563 | 204, 2564 | 208 2565 | ], 2566 | "CMYK": [ 2567 | 7, 2568 | 2, 2569 | 0, 2570 | 18 2571 | ], 2572 | "pinyin": "huā bái" 2573 | }, 2574 | { 2575 | "id": "6-9", 2576 | "hex": "#fcefe8", 2577 | "name": "鱼肚白", 2578 | "intro": "似鱼腹部的颜色,多指黎明时东方的天色颜色(M5Y5)", 2579 | "figure": "zuibaxian.png?width=100%", 2580 | "RGB": [ 2581 | 252, 2582 | 239, 2583 | 232 2584 | ], 2585 | "CMYK": [ 2586 | 0, 2587 | 5, 2588 | 8, 2589 | 1 2590 | ], 2591 | "pinyin": "yú dǔ bái" 2592 | }, 2593 | { 2594 | "id": "6-10", 2595 | "hex": "#e3f9fd", 2596 | "name": "莹白", 2597 | "intro": "晶莹洁白", 2598 | "figure": "meinv.png?width=18", 2599 | "RGB": [ 2600 | 227, 2601 | 249, 2602 | 253 2603 | ], 2604 | "CMYK": [ 2605 | 10, 2606 | 2, 2607 | 0, 2608 | 1 2609 | ], 2610 | "pinyin": "yíng bái" 2611 | }, 2612 | { 2613 | "id": "6-11", 2614 | "hex": "#808080", 2615 | "name": "灰色", 2616 | "intro": "黑色和白色混和成的一种颜色", 2617 | "figure": "mutong.png", 2618 | "RGB": [ 2619 | 128, 2620 | 128, 2621 | 128 2622 | ], 2623 | "CMYK": [ 2624 | 0, 2625 | 0, 2626 | 0, 2627 | 50 2628 | ], 2629 | "pinyin": "huī sè" 2630 | }, 2631 | { 2632 | "id": "6-12", 2633 | "hex": "#eedeb0", 2634 | "name": "牙色", 2635 | "intro": "与象牙相似的淡黄色(暖白)", 2636 | "figure": "zhuzi.png?width=14", 2637 | "RGB": [ 2638 | 238, 2639 | 222, 2640 | 176 2641 | ], 2642 | "CMYK": [ 2643 | 0, 2644 | 7, 2645 | 26, 2646 | 7 2647 | ], 2648 | "pinyin": "yá sè" 2649 | }, 2650 | { 2651 | "id": "6-13", 2652 | "hex": "#f0f0f4", 2653 | "name": "铅白", 2654 | "intro": "铅粉的白色。铅粉,国画颜料,日久易氧化\"返铅\"变黑。铅粉在古时用以搽脸的化妆品。(冷白)", 2655 | "figure": "baishan.png?width=100%", 2656 | "RGB": [ 2657 | 240, 2658 | 240, 2659 | 244 2660 | ], 2661 | "CMYK": [ 2662 | 2, 2663 | 2, 2664 | 0, 2665 | 4 2666 | ], 2667 | "pinyin": "qiān bái" 2668 | } 2669 | ], 2670 | "RGB": [ 2671 | 240, 2672 | 240, 2673 | 244 2674 | ], 2675 | "id": 6 2676 | }, 2677 | { 2678 | "name": "黑", 2679 | "hex": "#000000", 2680 | "colors": [ 2681 | { 2682 | "id": "7-0", 2683 | "hex": "#622a1d", 2684 | "name": "玄色", 2685 | "intro": "赤黑色,黑中带红的颜色,又泛指黑色", 2686 | "RGB": [ 2687 | 98, 2688 | 42, 2689 | 29 2690 | ], 2691 | "CMYK": [ 2692 | 0, 2693 | 57, 2694 | 70, 2695 | 62 2696 | ], 2697 | "pinyin": "xuán sè" 2698 | }, 2699 | { 2700 | "id": "7-1", 2701 | "hex": "#3d3b4f", 2702 | "name": "玄青", 2703 | "intro": "深黑色", 2704 | "RGB": [ 2705 | 61, 2706 | 59, 2707 | 79 2708 | ], 2709 | "CMYK": [ 2710 | 23, 2711 | 25, 2712 | 0, 2713 | 69 2714 | ], 2715 | "pinyin": "xuán qīng" 2716 | }, 2717 | { 2718 | "id": "7-2", 2719 | "hex": "#725e82", 2720 | "name": "乌色", 2721 | "intro": "暗而呈黑的颜色", 2722 | "RGB": [ 2723 | 114, 2724 | 94, 2725 | 130 2726 | ], 2727 | "CMYK": [ 2728 | 12, 2729 | 28, 2730 | 0, 2731 | 49 2732 | ], 2733 | "pinyin": "wū sè" 2734 | }, 2735 | { 2736 | "id": "7-3", 2737 | "hex": "#392f41", 2738 | "name": "乌黑", 2739 | "intro": "深黑;漆黑", 2740 | "figure": "moon.png", 2741 | "RGB": [ 2742 | 57, 2743 | 47, 2744 | 65 2745 | ], 2746 | "CMYK": [ 2747 | 12, 2748 | 28, 2749 | 0, 2750 | 75 2751 | ], 2752 | "pinyin": "wū hēi" 2753 | }, 2754 | { 2755 | "id": "7-4", 2756 | "hex": "#161823", 2757 | "name": "漆黑", 2758 | "intro": "非常黑的", 2759 | "figure": "flower.moon.png?o=0.6", 2760 | "RGB": [ 2761 | 22, 2762 | 24, 2763 | 35 2764 | ], 2765 | "CMYK": [ 2766 | 37, 2767 | 31, 2768 | 0, 2769 | 86 2770 | ], 2771 | "pinyin": "qī hēi" 2772 | }, 2773 | { 2774 | "id": "7-5", 2775 | "hex": "#50616d", 2776 | "name": "墨色", 2777 | "intro": "即黑色", 2778 | "figure": "huashan.png?width=18", 2779 | "RGB": [ 2780 | 80, 2781 | 97, 2782 | 109 2783 | ], 2784 | "CMYK": [ 2785 | 27, 2786 | 11, 2787 | 0, 2788 | 57 2789 | ], 2790 | "pinyin": "mò sè" 2791 | }, 2792 | { 2793 | "id": "7-6", 2794 | "hex": "#758a99", 2795 | "name": "墨灰", 2796 | "intro": "即黑灰", 2797 | "figure": "huizhuzi.png?position=left", 2798 | "RGB": [ 2799 | 117, 2800 | 138, 2801 | 153 2802 | ], 2803 | "CMYK": [ 2804 | 24, 2805 | 10, 2806 | 0, 2807 | 40 2808 | ], 2809 | "pinyin": "mò huī" 2810 | }, 2811 | { 2812 | "id": "7-7", 2813 | "hex": "#000000", 2814 | "name": "黑色", 2815 | "intro": "亮度最低的非彩色的或消色差的物体的颜色;最暗的灰色;与白色截然不同的消色差的颜色;被认为特别属于那些既不能反射、又不能透过能使人感觉到的微小入射光的物体,任何亮度很低的物体颜色。", 2816 | "figure": "moon.png", 2817 | "RGB": [ 2818 | 0, 2819 | 0, 2820 | 0 2821 | ], 2822 | "CMYK": [ 2823 | 0, 2824 | 0, 2825 | 0, 2826 | 100 2827 | ], 2828 | "pinyin": "hēi sè" 2829 | }, 2830 | { 2831 | "id": "7-8", 2832 | "hex": "#493131", 2833 | "name": "缁色", 2834 | "intro": "帛黑色", 2835 | "RGB": [ 2836 | 73, 2837 | 49, 2838 | 49 2839 | ], 2840 | "CMYK": [ 2841 | 0, 2842 | 33, 2843 | 33, 2844 | 71 2845 | ], 2846 | "pinyin": "zī sè" 2847 | }, 2848 | { 2849 | "id": "7-9", 2850 | "hex": "#312520", 2851 | "name": "煤黑", 2852 | "intro": "别称:象牙黑。都是黑,不过有冷暖之分", 2853 | "RGB": [ 2854 | 49, 2855 | 37, 2856 | 32 2857 | ], 2858 | "CMYK": [ 2859 | 0, 2860 | 24, 2861 | 35, 2862 | 81 2863 | ], 2864 | "pinyin": "méi hēi" 2865 | }, 2866 | { 2867 | "id": "7-10", 2868 | "hex": "#5d513c", 2869 | "name": "黧", 2870 | "intro": "黑中带黄的颜色", 2871 | "figure": "denglou1.png?width=14&position=top", 2872 | "RGB": [ 2873 | 93, 2874 | 81, 2875 | 60 2876 | ], 2877 | "CMYK": [ 2878 | 0, 2879 | 13, 2880 | 35, 2881 | 64 2882 | ], 2883 | "pinyin": "lí" 2884 | }, 2885 | { 2886 | "id": "7-11", 2887 | "hex": "#75664d", 2888 | "name": "黎", 2889 | "intro": "黑中带黄似黎草色", 2890 | "figure": "denglou2.png?width=14&position=top", 2891 | "RGB": [ 2892 | 117, 2893 | 102, 2894 | 77 2895 | ], 2896 | "CMYK": [ 2897 | 0, 2898 | 13, 2899 | 34, 2900 | 54 2901 | ], 2902 | "pinyin": "lí" 2903 | }, 2904 | { 2905 | "id": "7-12", 2906 | "hex": "#6b6882", 2907 | "name": "黝", 2908 | "intro": "本义为淡黑色或微青黑色。", 2909 | "figure": "benyue.png", 2910 | "RGB": [ 2911 | 107, 2912 | 104, 2913 | 130 2914 | ], 2915 | "CMYK": [ 2916 | 18, 2917 | 20, 2918 | 0, 2919 | 49 2920 | ], 2921 | "pinyin": "yǒu" 2922 | }, 2923 | { 2924 | "id": "7-13", 2925 | "hex": "#665757", 2926 | "name": "黝黑", 2927 | "intro": "(皮肤暴露在太阳光下而晒成的)青黑色", 2928 | "RGB": [ 2929 | 102, 2930 | 87, 2931 | 87 2932 | ], 2933 | "CMYK": [ 2934 | 0, 2935 | 15, 2936 | 15, 2937 | 60 2938 | ], 2939 | "pinyin": "yǒu hēi" 2940 | }, 2941 | { 2942 | "id": "7-14", 2943 | "hex": "#41555d", 2944 | "name": "黯", 2945 | "intro": "深黑色、泛指黑色", 2946 | "figure": "denglouchuan.png", 2947 | "RGB": [ 2948 | 65, 2949 | 85, 2950 | 93 2951 | ], 2952 | "CMYK": [ 2953 | 30, 2954 | 9, 2955 | 0, 2956 | 64 2957 | ], 2958 | "pinyin": "àn" 2959 | } 2960 | ], 2961 | "RGB": [ 2962 | 0, 2963 | 0, 2964 | 0 2965 | ], 2966 | "id": 7 2967 | }, 2968 | { 2969 | "name": "金银", 2970 | "hex": "#eacd76", 2971 | "colors": [ 2972 | { 2973 | "id": "8-0", 2974 | "hex": "#f2be45", 2975 | "name": "赤金", 2976 | "intro": "足金的颜色", 2977 | "RGB": [ 2978 | 242, 2979 | 190, 2980 | 69 2981 | ], 2982 | "CMYK": [ 2983 | 0, 2984 | 21, 2985 | 71, 2986 | 5 2987 | ], 2988 | "pinyin": "chì jīn" 2989 | }, 2990 | { 2991 | "id": "8-1", 2992 | "hex": "#eacd76", 2993 | "name": "金色", 2994 | "intro": "平均为深黄色带光泽的颜色", 2995 | "RGB": [ 2996 | 234, 2997 | 205, 2998 | 118 2999 | ], 3000 | "CMYK": [ 3001 | 0, 3002 | 12, 3003 | 50, 3004 | 8 3005 | ], 3006 | "pinyin": "jīn sè" 3007 | }, 3008 | { 3009 | "id": "8-2", 3010 | "hex": "#e9e7ef", 3011 | "name": "银白", 3012 | "intro": "带银光的白色", 3013 | "figure": "qiangyan.png", 3014 | "RGB": [ 3015 | 233, 3016 | 231, 3017 | 239 3018 | ], 3019 | "CMYK": [ 3020 | 3, 3021 | 3, 3022 | 0, 3023 | 6 3024 | ], 3025 | "pinyin": "yín bái" 3026 | }, 3027 | { 3028 | "id": "8-3", 3029 | "hex": "#bacac6", 3030 | "name": "老银", 3031 | "intro": "金属氧化后的色彩", 3032 | "figure": "right.bottom.yesun.png", 3033 | "RGB": [ 3034 | 186, 3035 | 202, 3036 | 198 3037 | ], 3038 | "CMYK": [ 3039 | 8, 3040 | 0, 3041 | 2, 3042 | 21 3043 | ], 3044 | "pinyin": "lǎo yín" 3045 | }, 3046 | { 3047 | "id": "8-4", 3048 | "hex": "#a78e44", 3049 | "name": "乌金", 3050 | "intro": "", 3051 | "RGB": [ 3052 | 167, 3053 | 142, 3054 | 68 3055 | ], 3056 | "CMYK": [ 3057 | 0, 3058 | 15, 3059 | 59, 3060 | 35 3061 | ], 3062 | "pinyin": "wū jīn" 3063 | }, 3064 | { 3065 | "id": "8-5", 3066 | "hex": "#549688", 3067 | "name": "铜绿", 3068 | "intro": "", 3069 | "figure": "right.bottom.hehua.png", 3070 | "RGB": [ 3071 | 84, 3072 | 150, 3073 | 136 3074 | ], 3075 | "CMYK": [ 3076 | 44, 3077 | 0, 3078 | 9, 3079 | 41 3080 | ], 3081 | "pinyin": "tóng lǜ" 3082 | } 3083 | ], 3084 | "RGB": [ 3085 | 234, 3086 | 205, 3087 | 118 3088 | ], 3089 | "id": 8 3090 | } 3091 | ] 3092 | 3093 | -------------------------------------------------------------------------------- /pages/download/index.js: -------------------------------------------------------------------------------- 1 | const COLORS = require('../../data/colors') 2 | const { getCorrectTextColor } = require('../../utils/util') 3 | 4 | Page({ 5 | data: { 6 | currentColor: { 7 | RGB: [] 8 | }, 9 | poetry: {}, 10 | oppositeColor: '', 11 | canvasImage: '', 12 | figureHeight: 'auto', 13 | figureW: 'auto', 14 | figureO: 1, 15 | pos: '', 16 | }, 17 | onLoad (options) { 18 | const id = options.id.split('-') 19 | const currentColorSet = COLORS.find(item => item.id === Number(id[0])) 20 | const currentColor = currentColorSet.colors[id[1]] 21 | this.setData({ 22 | poetry: JSON.parse(options.poetry), 23 | currentColor, 24 | oppositeColor: getCorrectTextColor(currentColor.RGB), 25 | }) 26 | wx.setBackgroundColor({ 27 | backgroundColor: currentColor.hex, 28 | }) 29 | }, 30 | getParams(figure) { 31 | const search = {} 32 | const index = figure.indexOf('?') 33 | if (index === -1) return search 34 | figure.slice(index + 1).split('&').forEach((item) => { 35 | const kv = item.split('=') 36 | if (kv) { 37 | search[kv[0]] = kv[1] 38 | } 39 | }) 40 | return search 41 | }, 42 | handleFigureLoad: function (event) { 43 | const { height, width } = event.detail 44 | const { figure } = this.data.currentColor 45 | const params = this.getParams(figure) 46 | const figureW = params['width'] ? params['width'] === '100%' ? '750' : params['width'] * 28 : '644' 47 | const figureO = +(params['o'] || 1); 48 | const pos = params['position'] || 'bottom'; 49 | this.setData({ 50 | figureHeight: `${figureW * height / width}rpx`, 51 | figureW: figureW + 'rpx', 52 | figureO, 53 | pos 54 | }) 55 | }, 56 | async handleGenerateImage() { 57 | await this.getSetting() 58 | wx.showLoading({ 59 | title: '图片生成中', 60 | mask: true, 61 | }) 62 | if (this.data.canvasImage) { 63 | this.extraImage() 64 | return 65 | } 66 | try { 67 | const canvas = await this.drawCanvas() 68 | const res = await this.canvasToTempFilePath(canvas) 69 | this.setData({ 70 | canvasImage: res.tempFilePath 71 | }, () => { 72 | this.extraImage() 73 | }) 74 | } catch (e) { 75 | wx.hideLoading() 76 | wx.showToast({ 77 | title: '图片生成失败', 78 | icon: 'none', 79 | }) 80 | } 81 | }, 82 | extraImage() { 83 | wx.saveImageToPhotosAlbum({ 84 | filePath: this.data.canvasImage, 85 | success(res) { 86 | wx.showToast({ 87 | title: '图片已保存', 88 | icon: 'success', 89 | }) 90 | }, 91 | fail: (error) => { 92 | if (error.errMsg && error.errMsg.includes('cancel')) return 93 | if (error.errMsg.includes('fail auth deny')) { 94 | wx.showModal({ 95 | title: '保存失败', 96 | content: '请允许保存到相册', 97 | success (res) { 98 | if (res.confirm) { 99 | wx.openSetting() 100 | } 101 | }, 102 | complete: () => { 103 | this.setData({ 104 | canvasImage: '' 105 | }) 106 | } 107 | }) 108 | return 109 | } 110 | wx.showToast({ 111 | title: error.errMsg || '图片保存失败', 112 | icon: 'none', 113 | }) 114 | }, 115 | complete() { 116 | wx.hideLoading() 117 | } 118 | }) 119 | }, 120 | getCanvas() { 121 | return new Promise((resolve) => { 122 | const query = wx.createSelectorQuery() 123 | query.select('#PREVIEW_CANVAS') 124 | .fields({ node: true, size: true }) 125 | .exec((res) => { 126 | resolve(res[0]) 127 | }) 128 | }) 129 | }, 130 | async drawCanvas () { 131 | const { width, height, node } = await this.getCanvas() 132 | const canvas = node 133 | const ctx = canvas.getContext('2d') 134 | const systemInfo = wx.getSystemInfoSync() 135 | const dpr = systemInfo.pixelRatio 136 | console.log(systemInfo) 137 | canvas.width = width * dpr 138 | canvas.height = height * dpr 139 | ctx.scale(dpr, dpr) 140 | 141 | const { oppositeColor, currentColor, poetry } = this.data 142 | 143 | ctx.fillStyle = currentColor.hex 144 | ctx.fillRect(0, 0, width, height) 145 | 146 | await this.drawImage(canvas, ctx) 147 | 148 | ctx.font = 'normal bold 16px TChinese' 149 | ctx.textBaseline = 'bottom' 150 | ctx.fillStyle = oppositeColor 151 | ctx.fillText(currentColor.name, 10, height - 20) 152 | 153 | ctx.font = 'normal bold 22.4px cursive' 154 | const metrics1 = ctx.measureText(poetry.content[0]) 155 | const metrics2 = ctx.measureText(poetry.content[1]) 156 | ctx.font = 'normal 11.2px cursive' 157 | const metrics3 = ctx.measureText(`${poetry.author} · ${poetry.title}`) 158 | const minWidth = 84 * width / 375 159 | const maxWidth = Math.max(metrics1.width, metrics2.width, metrics3.width, minWidth) 160 | ctx.font = 'normal bold 22.4px cursive' 161 | ctx.fillText(poetry.content[0], (width - maxWidth) / 2, 146 * width / 375) 162 | ctx.fillText(poetry.content[1], (width - maxWidth) / 2, 146 * width / 375 + 35.84) 163 | ctx.font = 'normal 11.2px cursive' 164 | ctx.fillText(`${poetry.author} · ${poetry.title}`, (width - maxWidth) / 2, 146 * width / 375 + 71.68) 165 | return canvas 166 | }, 167 | canvasToTempFilePath(canvas) { 168 | return new Promise((resolve, reject) => { 169 | wx.canvasToTempFilePath({ 170 | canvas, 171 | success: (res) => { 172 | resolve(res) 173 | }, 174 | fail(error) { 175 | reject(error) 176 | } 177 | }) 178 | }) 179 | }, 180 | drawImage(canvas, ctx) { 181 | return new Promise((resolve, reject) => { 182 | const { currentColor, pos, figureO } = this.data 183 | const figureImg = canvas.createImage(); 184 | figureImg.src = `https://colors.ichuantong.cn/figure/${currentColor.figure || 'default.png'}`;//微信请求返回头像 185 | const params = this.getParams(currentColor.figure || 'default.png?width=8') 186 | const dpr = wx.getSystemInfoSync().pixelRatio 187 | const figureW = params['width'] ? (params['width'] === '100%' ? canvas.width / dpr : params['width'] * 14 * canvas.width / dpr / 375) : 322 * canvas.width / dpr / 375 188 | figureImg.onload = () => { 189 | const { width, height } = figureImg 190 | let dHeight = figureW * height / width 191 | let dy = pos === 'top' ? 0 : canvas.height / dpr - dHeight 192 | let dx = canvas.width / dpr - figureW 193 | if (pos === 'left') { 194 | dx = 0 195 | dy = 0 196 | } 197 | console.log(dx, dy, figureW, dHeight) 198 | ctx.save(); 199 | ctx.globalAlpha = 0.8 200 | ctx.drawImage(figureImg, dx, dy, figureW, dHeight) 201 | ctx.restore() 202 | resolve() 203 | } 204 | figureImg.onerror = (error) => { 205 | reject(error) 206 | } 207 | }) 208 | }, 209 | getSetting() { 210 | return new Promise((resolve, reject) => { 211 | wx.getSetting({ 212 | success (res) { 213 | if (res.authSetting['scope.writePhotosAlbum'] === false) { 214 | wx.showModal({ 215 | content: '未授权相册,请先授权相册', 216 | success (res) { 217 | if (res.confirm) { 218 | wx.openSetting() 219 | } 220 | } 221 | }) 222 | reject() 223 | } else { 224 | resolve() 225 | } 226 | }, 227 | fail() { 228 | resolve() 229 | } 230 | }) 231 | }) 232 | }, 233 | }) 234 | -------------------------------------------------------------------------------- /pages/download/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": { 3 | }, 4 | "navigationStyle": "custom" 5 | } 6 | -------------------------------------------------------------------------------- /pages/download/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{poetry.content[0]}} 4 | {{poetry.content[1]}} 5 | {{poetry.author}} · {{poetry.title}} 6 | 7 | {{currentColor.name}} 8 | 9 | 10 | 生成图片 11 | 12 | 13 | -------------------------------------------------------------------------------- /pages/download/index.wxss: -------------------------------------------------------------------------------- 1 | .container { 2 | font-variant: normal; 3 | position: fixed; 4 | left: 0; 5 | right: 0; 6 | bottom: 0; 7 | top: 0; 8 | z-index: 999; 9 | background-image: url(https://m.ifable.cn/images/bg.png); 10 | background-repeat: repeat; 11 | width: 100vw; 12 | color: rgb(255, 255, 235); 13 | } 14 | 15 | .poetry { 16 | position: absolute; 17 | left: 50%; 18 | top: 252rpx; 19 | transform: translateX(-50%); 20 | min-width: 168rpx; 21 | white-space: nowrap; 22 | line-height: 1.6; 23 | display: flex; 24 | flex-direction: column; 25 | align-items: flex-start; 26 | padding: 22.4rpx 33.6rpx; 27 | } 28 | 29 | .poetry .line { 30 | font-size: 44.8rpx; 31 | font-weight: bold; 32 | word-break: keep-all; 33 | color: inherit; 34 | font-family: inherit; 35 | letter-spacing: 2px; 36 | } 37 | 38 | .poetry-title { 39 | font-size: 22.4rpx; 40 | word-break: keep-all; 41 | margin-top: 28rpx; 42 | color: inherit; 43 | font-family: inherit; 44 | } 45 | 46 | .name { 47 | position: absolute; 48 | left: 0; 49 | bottom: 0; 50 | margin-left: 28rpx; 51 | margin-bottom: 28rpx; 52 | font-family: TChinese, serif; 53 | z-index: 99; 54 | } 55 | 56 | .figure { 57 | position: absolute; 58 | right: 0; 59 | z-index: -1; 60 | max-height: 100%; 61 | } 62 | 63 | .default-figure { 64 | width: 224rpx; 65 | height: 283.12rpx; 66 | bottom: 0; 67 | } 68 | 69 | .generate-image-button { 70 | position: absolute; 71 | left: 50%; 72 | bottom: 10vh; 73 | transform: translateX(-50%); 74 | border: none; 75 | border-radius: 8.4rpx; 76 | padding: 16.8rpx 22.4rpx; 77 | font-size: 28rpx; 78 | color: rgb(238, 238, 238); 79 | background: rgb(31, 47, 45); 80 | box-shadow: rgba(0, 0, 0, 0.5) 0 10rpx 18rpx; 81 | } 82 | 83 | .preview-canvas { 84 | position: absolute; 85 | left: -100vw; 86 | height: 100vh; 87 | width: 100vw; 88 | } 89 | -------------------------------------------------------------------------------- /pages/index/index.js: -------------------------------------------------------------------------------- 1 | //index.js 2 | //获取应用实例 3 | // const app = getApp() 4 | const COLORS = require('../../data/colors') 5 | const jinrishici = require('../../utils/jinrishici.js') 6 | const { getCorrectTextColor } = require('../../utils/util') 7 | 8 | Page({ 9 | data: { 10 | colorsList: COLORS.map(item => { 11 | const { colors, ...info } = item 12 | return info 13 | }), 14 | currentColorSet: {}, 15 | currentColor:{}, 16 | poetry: {}, 17 | poetryJson: '', 18 | topHeight: 0, 19 | figureHeight: 'auto', 20 | expand: false, 21 | }, 22 | onLoad: function () { 23 | this.fetchPoetry() 24 | this.initState() 25 | }, 26 | initState () { 27 | const { bottom } = wx.getMenuButtonBoundingClientRect() 28 | const currentColorSet = COLORS[2] 29 | const currentColor = currentColorSet.colors[16] 30 | this.setData({ 31 | topHeight: bottom, 32 | currentColorSet, 33 | currentColor, 34 | oppositeColor: getCorrectTextColor(currentColor.RGB) 35 | }) 36 | wx.setBackgroundColor({ 37 | backgroundColor: currentColor.hex, 38 | }) 39 | }, 40 | handleColorChange (event) { 41 | this.fetchPoetry() 42 | const { id } = event.currentTarget.dataset 43 | const currentColor = this.data.currentColorSet.colors.find(item => item.id === id) 44 | this.setData({ 45 | currentColor, 46 | oppositeColor: getCorrectTextColor(currentColor.RGB) 47 | }) 48 | wx.setBackgroundColor({ 49 | backgroundColor: currentColor.hex, 50 | }) 51 | }, 52 | handleChangeColorSet (event) { 53 | this.fetchPoetry() 54 | const { id } = event.currentTarget.dataset 55 | const currentColorSet = COLORS[id] 56 | const currentColor = currentColorSet.colors[0] 57 | this.setData({ 58 | currentColorSet, 59 | currentColor, 60 | oppositeColor: getCorrectTextColor(currentColor.RGB) 61 | }) 62 | wx.setBackgroundColor({ 63 | backgroundColor: currentColor.hex, 64 | }) 65 | }, 66 | handleExpand () { 67 | this.setData({ 68 | expand: !this.data.expand, 69 | }) 70 | }, 71 | handleFigureLoad: function (event) { 72 | const { height, width } = event.detail 73 | this.setData({ 74 | figureHeight: `${162 * height / width}rpx` 75 | }) 76 | }, 77 | handleCopyHex: function () { 78 | wx.setClipboardData({ data: this.data.currentColor.hex }) 79 | }, 80 | fetchPoetry: function () { 81 | jinrishici.load(result => { 82 | let obj = { 83 | content: result.data.content, 84 | author: result.data.origin.author, 85 | title: result.data.origin.title 86 | }; 87 | obj.content = obj.content 88 | .replace(/[,|。|!|?|、]/g, ' ') 89 | .trim() 90 | .split(' '); 91 | this.setData({ poetry: obj, poetryJson: JSON.stringify(obj) }) 92 | }) 93 | } 94 | }) 95 | -------------------------------------------------------------------------------- /pages/index/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": {}, 3 | "navigationStyle": "custom" 4 | } 5 | -------------------------------------------------------------------------------- /pages/index/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | {{index + 1}} 10 | {{item.name}} 11 | 12 | 13 | 14 | {{item.hex}} 15 | 16 | 17 | 18 | 19 | 20 | {{item.pinyin}} 21 | 22 | 23 | 24 | 25 | 26 | {{currentColor.CMYK[0]}} 27 | {{currentColor.CMYK[1]}} 28 | {{currentColor.CMYK[2]}} 29 | {{currentColor.CMYK[3]}} 30 | {{currentColor.RGB[0]}} 31 | {{currentColor.RGB[1]}} 32 | {{currentColor.RGB[2]}} 33 | 34 | {{currentColor.hex}} 35 | 36 | 37 | 38 | {{currentColor.name}} 39 | {{currentColor.pinyin}} 40 | 41 | {{poetry.content[0]}} 42 | {{poetry.content[1]}} 43 | {{poetry.author}} · {{poetry.title}} 44 | 45 | figure 46 | 47 | 48 | {{item.name}} 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /pages/index/index.wxss: -------------------------------------------------------------------------------- 1 | /**index.wxss**/ 2 | .container { 3 | background-image: url(https://m.ifable.cn/images/bg.png), url(data:image/png;base64,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); 4 | background-size: auto; 5 | background-repeat: repeat, repeat-x; 6 | background-position: 0 0; 7 | overflow: hidden; 8 | margin: 0 auto; 9 | align-items: flex-start; 10 | padding-bottom: 56rpx; 11 | padding-left: 14rpx; 12 | padding-right: 14rpx; 13 | } 14 | .color-nav { 15 | box-sizing: border-box; 16 | height: 100%; 17 | width: 320rpx; 18 | margin-right: 42rpx; 19 | } 20 | .colors { 21 | display: flex; 22 | flex-wrap: wrap; 23 | align-content: flex-start; 24 | } 25 | .color-nav-item { 26 | border-top: 11.2rpx solid; 27 | display: flex; 28 | flex-direction: row; 29 | writing-mode: vertical-lr; 30 | padding: 14rpx 5.6rpx 11.2rpx; 31 | margin: 11.2rpx; 32 | border-bottom-right-radius: 12rpx; 33 | border-bottom-left-radius: 12rpx; 34 | transition: all 0.5s ease 0s; 35 | align-self: flex-start; 36 | } 37 | 38 | .color-nav-item .line1 { 39 | display: flex; 40 | flex-direction: column; 41 | justify-content: space-between; 42 | margin-bottom: 16.8rpx; 43 | min-height: 179.2rpx; 44 | } 45 | 46 | /*.color-nav-item .line1 .cmyk {*/ 47 | /* display: flex;*/ 48 | /* justify-content: space-between;*/ 49 | /*}*/ 50 | 51 | .color-nav-item .line1 .name { 52 | writing-mode: vertical-lr; 53 | align-self: flex-end; 54 | font-size: 22.4rpx; 55 | margin-left: 5.6rpx; 56 | font-weight: 800; 57 | display: flex; 58 | justify-content: space-between; 59 | align-items: center; 60 | height: 100%; 61 | width: 100%; 62 | } 63 | 64 | .color-nav-item .line1 .name .seq { 65 | opacity: 0.5; 66 | } 67 | 68 | .color-nav-item .line1 .name .txt { 69 | flex: 1; 70 | text-align: center; 71 | font-size: 28rpx; 72 | } 73 | 74 | .color-nav-item .line2 { 75 | display: flex; 76 | flex-direction: column; 77 | justify-content: space-between; 78 | text-transform: uppercase; 79 | font-size: 16.8rpx; 80 | font-weight: bold; 81 | } 82 | 83 | .color-nav-item .line2 .rgb { 84 | display: flex; 85 | flex-direction: column; 86 | } 87 | 88 | .color-nav-item .line2 .rgb .line { 89 | width: 4rpx; 90 | height: 168rpx; 91 | margin: 0 2rpx; 92 | } 93 | 94 | .color-nav-item .line2 .hex { 95 | font-size: 16.8rpx; 96 | color: inherit; 97 | } 98 | 99 | .color-nav-item .line2 .pinyin { 100 | text-transform: capitalize; 101 | color: inherit; 102 | } 103 | 104 | .color-params { 105 | display: flex; 106 | flex-direction: column; 107 | width: 180rpx; 108 | margin-right: 14rpx; 109 | margin-top: 16.8rpx; 110 | } 111 | 112 | .color-params .item { 113 | border-top: 2rpx solid rgba(255, 255, 255, 0.6); 114 | padding: 22.4rpx 0 11.2rpx 5.6rpx; 115 | position: relative; 116 | } 117 | 118 | .color-params .item::before { 119 | content: attr(data-id); 120 | text-transform: uppercase; 121 | position: absolute; 122 | font-size: 20rpx; 123 | font-weight: 800; 124 | color: rgb(255, 255, 255); 125 | top: 11.2rpx; 126 | left: 0; 127 | text-shadow: black 0 0 10rpx; 128 | } 129 | 130 | .color-params .item.cmyk, .color-params .item.rgb { 131 | text-align: right; 132 | font-size: 28rpx; 133 | } 134 | .color-params .item.cmyk.c { 135 | color: rgba(0, 147, 211, 0.8); 136 | } 137 | .color-params .item.cmyk.m { 138 | color: rgba(204, 0, 107, 0.8); 139 | } 140 | .color-params .item.cmyk.y { 141 | color: rgba(255, 241, 12, 0.8); 142 | } 143 | .color-params .item.cmyk.k { 144 | color: rgba(51, 51, 51, 0.8); 145 | } 146 | .color-params .item.rgb.r { 147 | color: rgba(255, 0, 0, 0.8); 148 | } 149 | .color-params .item.rgb.g { 150 | color: rgba(0, 255, 0, 0.8); 151 | } 152 | .color-params .item.rgb.b { 153 | color: rgba(0, 0, 255, 0.8); 154 | } 155 | 156 | .color-params .item .hex { 157 | display: block; 158 | margin-top: 16.8rpx; 159 | padding: 8.4rpx; 160 | font-size: 28rpx; 161 | text-align: center; 162 | text-transform: uppercase; 163 | color: rgb(255, 255, 255); 164 | background: rgba(51, 51, 51, 0.5); 165 | border-radius: 5.6rpx; 166 | } 167 | 168 | .color-view { 169 | box-sizing: border-box; 170 | display: flex; 171 | flex-direction: column; 172 | justify-content: space-around; 173 | align-items: center; 174 | box-shadow: rgba(0, 0, 0, 0.5) 0 0 16rpx; 175 | position: relative; 176 | width: 162rpx; 177 | min-height: 504rpx; 178 | border-radius: 12rpx; 179 | padding: 28rpx 22.4rpx; 180 | margin: 156rpx 14rpx 16rpx 16rpx; 181 | } 182 | .color-name { 183 | font-size: 100rpx; 184 | font-family: TChinese, serif; 185 | letter-spacing: -14rpx; 186 | writing-mode: vertical-lr; 187 | } 188 | .color-pinyin { 189 | text-transform: capitalize; 190 | font-size: 19.6rpx; 191 | writing-mode: vertical-lr; 192 | position: absolute; 193 | right: 9.8rpx; 194 | top: 19.6rpx; 195 | color: inherit; 196 | } 197 | .poetry { 198 | box-sizing: border-box; 199 | font-size: 28rpx; 200 | display: flex; 201 | flex-direction: row-reverse; 202 | align-items: flex-start; 203 | line-height: 1.2; 204 | padding: 16.8rpx 11.2rpx; 205 | margin: 28rpx 0 56rpx; 206 | z-index: 1; 207 | } 208 | .poetry .line { 209 | color: inherit; 210 | text-align: right; 211 | width: 33.6rpx; 212 | letter-spacing: 4rpx; 213 | font-weight: bold; 214 | } 215 | .poetry-title { 216 | color: inherit; 217 | font-size: 16.8rpx; 218 | width: 19.6rpx; 219 | align-self: flex-end; 220 | margin-right: 14rpx; 221 | } 222 | .color-view image { 223 | width: 100%; 224 | height: auto; 225 | position: absolute; 226 | bottom: 0; 227 | } 228 | 229 | .color-set { 230 | position: fixed; 231 | bottom: 56rpx; 232 | right: 84rpx; 233 | display: flex; 234 | padding: 0 28rpx; 235 | z-index: 999; 236 | } 237 | 238 | .color-set.expand .color-set-item { 239 | margin-right: -9.52rpx; 240 | } 241 | 242 | .color-set-item { 243 | transition: all 0.6s ease 0s; 244 | box-shadow: black 0 0 22.4rpx; 245 | width: 72.8rpx; 246 | height: 72.8rpx; 247 | margin-right: -50.4rpx; 248 | border-radius: 50%; 249 | display: flex; 250 | justify-content: center; 251 | align-items: center; 252 | font-size: 22.4rpx; 253 | font-weight: 800; 254 | color: #FFFFEB; 255 | } 256 | 257 | .color-set-item.selected { 258 | transform: translateY(-44.8rpx); 259 | } 260 | 261 | .btn { 262 | cursor: pointer; 263 | position: absolute; 264 | right: -44.8rpx; 265 | top: 50%; 266 | transform: translateY(-50%); 267 | background-image: url('https://colors.ichuantong.cn/assets/yinyang-b348864a.svg'); 268 | background-size: cover; 269 | width: 84rpx; 270 | height: 84rpx; 271 | border: 1px solid rgb(0, 0, 0); 272 | border-radius: 50%; 273 | transition: all 0.6s ease 0s; 274 | box-shadow: black 1px -1px 6px; 275 | } 276 | 277 | .color-set.expand .btn { 278 | transform: translateY(-50%) rotateZ(180deg); 279 | } 280 | 281 | .btns { 282 | position: fixed; 283 | right: 28rpx; 284 | display: flex; 285 | flex-direction: column; 286 | justify-content: center; 287 | } 288 | 289 | .icon { 290 | display: flex; 291 | justify-content: center; 292 | align-items: center; 293 | margin-bottom: 28rpx; 294 | width: 44.8rpx; 295 | height: 44.8rpx; 296 | background-size: contain; 297 | } 298 | 299 | .share-icon { 300 | background-image: url("data:image/svg+xml;base64,PHN2ZyB0PSIxNTY5MzIwNDY3NTg0IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwNzMgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjE3NzYiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PHBhdGggZD0iTTE5MS41OTc2ODMgMTAyNGg2OTAuMDI5MzM1QTE5MS44NTAxMTcgMTkxLjg1MDExNyAwIDAgMCAxMDcyLjg0NjA1IDgzMy4wMzM0MDNWMTkxLjU5NzY4M0ExOTEuODUwMTE3IDE5MS44NTAxMTcgMCAwIDAgODgxLjYyNzAxOCAwSDE5MS41OTc2ODNBMTkxLjg1MDExNyAxOTEuODUwMTE3IDAgMCAwIDAgMTkxLjU5NzY4M1Y4MzMuMDMzNDAzYTE5MS44NTAxMTcgMTkxLjg1MDExNyAwIDAgMCAxOTEuNTk3NjgzIDE5MC45NjY1OTd6TTg3LjQ2ODUwNyA4MzMuMDMzNDAzVjE5MS41OTc2ODNhMTA0LjI1NTM5MyAxMDQuMjU1MzkzIDAgMCAxIDEwNC4xMjkxNzYtMTA0LjEyOTE3Nmg2OTAuMDI5MzM1YTEwNC4yNTUzOTMgMTA0LjI1NTM5MyAwIDAgMSAxMDQuMTI5MTc2IDEwNC4xMjkxNzZWODMzLjAzMzQwM2ExMDQuMjU1MzkzIDEwNC4yNTUzOTMgMCAwIDEtMTA0LjEyOTE3NiAxMDQuMTI5MTc2SDE5MS41OTc2ODNBMTA0LjI1NTM5MyAxMDQuMjU1MzkzIDAgMCAxIDg3LjQ2ODUwNyA4MzMuMDMzNDAzeiIgZmlsbD0iI2ZmZmZmZiIgcC1pZD0iMTc3NyI+PC9wYXRoPjxwYXRoIGQ9Ik0zNTEuNzY3Mjg3IDQ4MS43NzA5ODVhMTU0LjYxNjA0OCAxNTQuNjE2MDQ4IDAgMSAwLTE1NC42MTYwNDgtMTU0LjYxNjA0OCAxNTQuNzQyMjY1IDE1NC43NDIyNjUgMCAwIDAgMTU0LjYxNjA0OCAxNTQuNjE2MDQ4eiBtLTY3LjE0NzU0MS0xNTQuNjE2MDQ4YTY3LjE0NzU0MSA2Ny4xNDc1NDEgMCAxIDEgNjcuMTQ3NTQxIDY3LjE0NzU0MSA2Ny4xNDc1NDEgNjcuMTQ3NTQxIDAgMCAxLTY3LjE0NzU0MS02Ny4xNDc1NDF6TTE5MS41OTc2ODMgODI2Ljg0ODc2MWE0My41NDQ5MjggNDMuNTQ0OTI4IDAgMCAwIDMwLjkyMzIwOS0xMi42MjE3MThMMzg4Ljc0ODkyMSA2NDcuNzQ2NTggNTM2LjY3NTQ1OSA3OTUuMTY4MjQ4bDQwMC40ODcxMi00MDAuMTA4NDY3YTQzLjc5NzM2MiA0My43OTczNjIgMCAwIDAgMC02MS44NDY0MiA0NS44MTY4MzcgNDUuODE2ODM3IDAgMCAwLTYxLjg0NjQyIDBMNTM2LjY3NTQ1OSA2NzEuOTgwMjc5IDM4OC43NDg5MjEgNTI0LjA1Mzc0MSAxNjAuNjc0NDczIDc1Mi4xMjgxODlhNDMuOTIzNTc5IDQzLjkyMzU3OSAwIDAgMC0xMi42MjE3MTggMzAuOTIzMjEgNDMuNzk3MzYyIDQzLjc5NzM2MiAwIDAgMCA0My42NzExNDUgNDMuNzk3MzYyeiIgZmlsbD0iI2ZmZmZmZiIgcC1pZD0iMTc3OCI+PC9wYXRoPjwvc3ZnPg=="); 301 | } 302 | 303 | .download-icon { 304 | background-image: url("data:image/svg+xml;base64,PHN2ZyB0PSIxNTY4NzMxNjQxOTA1IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwNDcgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjE0NDYiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+PHBhdGggZD0iTTUyMy45ODc0NDkgMGE0Mi43NTkzNTMgNDIuNzU5MzUzIDAgMCAwLTQyLjc1OTM1MyA0Mi43NTkzNTN2NDk4LjE1ODgyMkwzMDEuNjYzNTI5IDM2MS4zNTM2MDhhNDMuNTAwODQ1IDQzLjUwMDg0NSAwIDAgMC02MC41NTUxNTMgMCA0Mi43NTkzNTMgNDIuNzU5MzUzIDAgMCAwIDAgNjAuNDMxNTcybDIyNy4wMjAwMzMgMjI3LjI2NzE5OGE3OS4wOTI0NDUgNzkuMDkyNDQ1IDAgMCAwIDExMS4yMjM3NTEgMGwyMjcuNTE0MzYyLTIyNy4xNDM2MTZhNDIuNjM1NzcxIDQyLjYzNTc3MSAwIDAgMCAwLTYwLjU1NTE1NCA0Mi44ODI5MzUgNDIuODgyOTM1IDAgMCAwLTYwLjU1NTE1MyAwTDU2Ni44NzAzODQgNTQwLjkxODE3NVY0Mi43NTkzNTNBNDIuODgyOTM1IDQyLjg4MjkzNSAwIDAgMCA1MjMuOTg3NDQ5IDB6IiBmaWxsPSIjZmZmZmZmIiBwLWlkPSIxNDQ3Ij48L3BhdGg+PHBhdGggZD0iTTg2MC44NzE4MzIgMTIwLjI0NTIzM2E0Mi44ODI5MzUgNDIuODgyOTM1IDAgMSAwIDAgODUuNjQyMjg4IDEwMS41ODQzNTkgMTAxLjU4NDM1OSAwIDAgMSAxMDEuNDYwNzc3IDEwMS41ODQzNTl2NTI5LjMwMTQ3M2ExMDEuNTg0MzU5IDEwMS41ODQzNTkgMCAwIDEtMTAxLjQ2MDc3NyAxMDEuNTg0MzU5SDE4Ny4yMjY2NDdhMTAxLjcwNzk0MSAxMDEuNzA3OTQxIDAgMCAxLTEwMS41ODQzNTktMTAxLjU4NDM1OVYzMDcuNDcxODhhMTAxLjcwNzk0MSAxMDEuNzA3OTQxIDAgMCAxIDEwMS41ODQzNTktMTAxLjU4NDM1OSA0Mi44ODI5MzUgNDIuODgyOTM1IDAgMCAwIDAtODUuNjQyMjg4QTE4Ny40NzM4MTEgMTg3LjQ3MzgxMSAwIDAgMCAwIDMwNy40NzE4OHY1MjkuMzAxNDczYTE4Ny40NzM4MTEgMTg3LjQ3MzgxMSAwIDAgMCAxODcuMjI2NjQ3IDE4Ny4yMjY2NDdoNjczLjY0NTE4NUExODcuMzUwMjI5IDE4Ny4zNTAyMjkgMCAwIDAgMTA0Ny45NzQ4OTcgODM2Ljc3MzM1M1YzMDcuNDcxODhBMTg3LjM1MDIyOSAxODcuMzUwMjI5IDAgMCAwIDg2MC44NzE4MzIgMTIwLjI0NTIzM3oiIGZpbGw9IiNmZmZmZmYiIHAtaWQ9IjE0NDgiPjwvcGF0aD48L3N2Zz4="); 305 | } 306 | -------------------------------------------------------------------------------- /pages/share/index.js: -------------------------------------------------------------------------------- 1 | const COLORS = require('../../data/colors') 2 | const { getCorrectTextColor } = require('../../utils/util') 3 | 4 | Page({ 5 | data: { 6 | colorSetName: '', 7 | currentColor: { 8 | RGB: [] 9 | }, 10 | oppositeColor: '', 11 | canvasImage: '', 12 | }, 13 | onLoad: function (options) { 14 | const id = options.id.split('-') 15 | const currentColorSet = COLORS.find(item => item.id === Number(id[0])) 16 | const currentColor = currentColorSet.colors[id[1]] 17 | this.setData({ 18 | colorSetName: currentColorSet.name, 19 | currentColor, 20 | oppositeColor: getCorrectTextColor(currentColor.RGB) 21 | }) 22 | wx.setBackgroundColor({ 23 | backgroundColor: currentColor.hex, 24 | }) 25 | }, 26 | getCanvas() { 27 | return new Promise((resolve) => { 28 | const query = wx.createSelectorQuery() 29 | query.select('#SHARE_CARD_CANVAS') 30 | .fields({ node: true, size: true }) 31 | .exec((res) => { 32 | resolve(res[0]) 33 | }) 34 | }) 35 | }, 36 | async drawCanvas () { 37 | const { width, height, node } = await this.getCanvas() 38 | const canvas = node 39 | const ctx = canvas.getContext('2d') 40 | const dpr = wx.getSystemInfoSync().pixelRatio 41 | canvas.width = width * dpr 42 | canvas.height = height * dpr 43 | ctx.scale(dpr, dpr) 44 | 45 | const { oppositeColor, currentColor, colorSetName } = this.data 46 | 47 | ctx.fillStyle = oppositeColor 48 | ctx.fillRect(0, 0, width, height) 49 | 50 | ctx.arc(156.5, 156.5, 129.5, 0, 2 * Math.PI) 51 | const grd = ctx.createLinearGradient(156.5, 27, 156.5, 286) 52 | grd.addColorStop(0, currentColor.hex) 53 | grd.addColorStop(1, `rgba(${currentColor.RGB.join(',')}, 0.6)`) 54 | ctx.fillStyle = grd 55 | ctx.fill() 56 | ctx.strokeStyle = 'rgb(238, 238, 238)' 57 | ctx.lineWidth = 2 58 | ctx.stroke() 59 | 60 | ctx.font = 'normal bold 14px TChinese' 61 | ctx.textBaseline = 'bottom' 62 | ctx.fillStyle = `rgba(${currentColor.RGB.join(',')}, 0.8)` 63 | const metrics = ctx.measureText(`${colorSetName} · ${currentColor.name}`) 64 | ctx.fillText(`${colorSetName} · ${currentColor.name}`, 304.6 - metrics.width, 300) 65 | await this.drawImage(canvas, ctx) 66 | return canvas 67 | }, 68 | canvasToTempFilePath(canvas) { 69 | return new Promise((resolve, reject) => { 70 | wx.canvasToTempFilePath({ 71 | canvas, 72 | success: (res) => { 73 | resolve(res) 74 | }, 75 | fail(error) { 76 | reject(error) 77 | } 78 | }) 79 | }) 80 | }, 81 | drawImage(canvas, ctx) { 82 | return new Promise((resolve, reject) => { 83 | const { currentColor } = this.data 84 | const figureImg = canvas.createImage(); 85 | figureImg.src = `https://colors.ichuantong.cn/figure/${currentColor.figure || 'default.png'}`;//微信请求返回头像 86 | figureImg.onload = () => { 87 | const { width, height } = figureImg 88 | let dWidth = 257 89 | let dHeight = 257 90 | if (width > height) { 91 | dHeight = 257 * height / width 92 | } 93 | if (width < height) { 94 | dWidth = 257 * width / height 95 | } 96 | ctx.save(); 97 | ctx.beginPath()//开始创建一个路径 98 | ctx.globalAlpha = 0.8 99 | ctx.arc(156.5, 156.5, 128.5, 0, 2 * Math.PI) 100 | ctx.clip() //裁剪 101 | ctx.drawImage(figureImg, (313 - dWidth) / 2, (313 - dHeight) / 2, dWidth, dHeight) 102 | ctx.closePath() 103 | ctx.restore() 104 | resolve() 105 | } 106 | figureImg.onerror = (error) => { 107 | reject(error) 108 | } 109 | }) 110 | }, 111 | getSetting() { 112 | return new Promise((resolve, reject) => { 113 | wx.getSetting({ 114 | success (res) { 115 | if (res.authSetting['scope.writePhotosAlbum'] === false) { 116 | wx.showModal({ 117 | content: '未授权相册,请先授权相册', 118 | success (res) { 119 | if (res.confirm) { 120 | wx.openSetting() 121 | } 122 | } 123 | }) 124 | reject() 125 | } else { 126 | resolve() 127 | } 128 | }, 129 | fail() { 130 | resolve() 131 | } 132 | }) 133 | }) 134 | }, 135 | async handleGenerateImage() { 136 | // scope.writePhotosAlbum: true 137 | await this.getSetting() 138 | wx.showLoading({ 139 | title: '图片生成中', 140 | mask: true, 141 | }) 142 | if (this.data.canvasImage) { 143 | this.extraImage() 144 | return 145 | } 146 | try { 147 | const canvas = await this.drawCanvas() 148 | const res = await this.canvasToTempFilePath(canvas) 149 | this.setData({ 150 | canvasImage: res.tempFilePath 151 | }, () => { 152 | this.extraImage() 153 | }) 154 | } catch (e) { 155 | wx.hideLoading() 156 | wx.showToast({ 157 | title: '图片生成失败', 158 | icon: 'none', 159 | }) 160 | } 161 | }, 162 | extraImage() { 163 | wx.saveImageToPhotosAlbum({ 164 | filePath: this.data.canvasImage, 165 | success(res) { 166 | wx.showToast({ 167 | title: '图片已保存', 168 | icon: 'success', 169 | }) 170 | }, 171 | fail: (error) => { 172 | if (error.errMsg && error.errMsg.includes('cancel')) return 173 | if (error.errMsg.includes('fail auth deny')) { 174 | wx.showModal({ 175 | title: '保存失败', 176 | content: '请允许保存到相册', 177 | success (res) { 178 | if (res.confirm) { 179 | wx.openSetting() 180 | } 181 | }, 182 | complete: () => { 183 | this.setData({ 184 | canvasImage: '' 185 | }) 186 | } 187 | }) 188 | return 189 | } 190 | wx.showToast({ 191 | title: error.errMsg || '图片保存失败', 192 | icon: 'none', 193 | }) 194 | }, 195 | complete() { 196 | wx.hideLoading() 197 | } 198 | }) 199 | } 200 | }) 201 | -------------------------------------------------------------------------------- /pages/share/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "usingComponents": { 3 | }, 4 | "navigationStyle": "custom" 5 | } 6 | -------------------------------------------------------------------------------- /pages/share/index.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /pages/share/index.wxss: -------------------------------------------------------------------------------- 1 | .container { 2 | background-image: url(https://m.ifable.cn/images/bg.png), url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAAAvCAMAAACRx3WWAAADAFBMVEUAAAAfKjANDxE+SlYJDhQ1QEc7R00yPURrSlo8S1INDA0uNTshKS4sNjw9SlNCUlceKC8hKC40QEgnMDVDUVcVHCMiKjAuOD8vOkESGSAeJSsbIyocIykhKjEkLTQMCwwQDw9gTlgoMTdWY28cIyoVExFgSVUiKzEkLjclLjMpMTdRT08VHCMiKzEdJSofJy4lLjoNEBYWHCIcJCsfJiwlLjclLzQkLjYmMDhDQUIZIioXHSMcJCt1Z34hKC0mLjBIRkgVFRcWHSYWHCMkLDIkLTOIeXlrXmsXHiYYICgdJy0iKjB0WGUaIikaIScjLDQoMTU+OjxxVWIjKjF8aoJnWGgnLzUMEBpRRE8TGR0lLzdpU195bIEZIChpUFt4aHsdJi4XBw5rTF1WS1MVGyMZICZgUGAsOEdiXVwuCyJZU1UgBBlnYWMtLxt0ZHUnLlQAAAB2XGYKCQoMDA1KOzoODg4SEBANEhsLDxlHNzQPFB4QDg4gHhsPFiFMPkCkmJZ8fXlmS1UnIySpnJ1XVlWfnpwJDBZVU1NRQUCCd3hPPjkcGxkKBgcCBQd6bmBjYF9nW1W7t6aIfH3CvLaAbGsIBANiRlBpZUZINTwvKSmkq5yjn5qcmpaCfHtURkt0ZmoVGyOdk5N2dnRZUkpeVkA5MCssJSe4qKxzYGZgXF1OTE0LDx8OCQq8ra6WmJBycnFtVWB2bFpLOjPDtbaJiINiVFNuaU1RQ0hLOEEkHyAaFxXPwb/Iu76+sLO9ua6prZ+Wjo+PgYJxYmFbWlpQQEVYT0FMRzzP2seOjYiBc218bGZwWmRsXltfV02zqqawo6Objop3cHBubmxyaFVlX0dCMy8KDhPWy8iUiIqEgn97dXRaVlhDJzYiFxw0GBeTkYx/bnRXT05cS0tZRz1TQjkbEhXKu7iVioJmY2RRS0M5NDVBKiYqIRyaopRVSUBAOjM4KSCOg3lpYE+qpZ1qaWfFz724wK+2sq2Fd3NHRDE7HS87ICDJ08GutafBy7m9x7W7XodlAAAAcHRSTlMAAwUFCSQXIP4S+zK8PhwOwqUqQQvzlTcu+p/Fto9u/fv3WAm8/vh7aE5I/u2xq4Fz/tmxh4FciVT+2tPP95sm/v754KJ3/vfy08q3/uO/mxn++ar39jn69vRj+Pbr/ffV/v325sn2Tfb+9v72/fdbwAZ0MAAAEQJJREFUaN6U0N1rUnEcx3Ev+zd2UTfnL/AikC7cTTdGQVAUFURUxAKJovCc9NjJCjWzVkfNtAd3JHWm23JnzqeFbi11GkznhmOQk8GC2uPFevh+f+dXuR6ofjcv3h8OPw4/Vffh3Ue7uk8d7D58+BxK+sAPD/zq/s4+RPosEfsk7W92gYdOnj3xzRNHd+8/8Ivdp6mku7GpB9GuDs/97OH950CVXn9Db9Dff2i4QdVfR4cMsKPQl9DrdB9Teuy7l7Y79Fv1Lx8qbUCx/8MXBgOoB7HxP+AibBRbD6r6d+06tPf8+fP9u7qIr7E7vfpr7+tw7zbhHKEN0j7yk1379v6H/f+m6qrF0nd8x457HXq3Oe+hTbx6DxrFnfTf9Dqm+jvt+4uvHVOvibT7HTO0UeztHtESVRqz6FnqudWjcYmepz13e3Rusb4Eqs2KS24xrlOso8/CYlwNPqA+aooFDbgHGr1WEAtB8GIThVNPhSVqDuVSYRvqobs/FW6jM9RKann1LhihrorLlZ1wYQV8DrbF5chN6jCYE5f9iZ4eVW49H9YNG+9K6/nm0rDxsrCeX4a+1VD2C8FP+WX1sPE5o7hT8ykvauA7IrQ6lU8x74hi8J1xWCfmPwnQIO5XnoXz6+05403UNme8MlfY+rKKNvPrq3OJxJn41pdKAiwQjcfqW5/9xkQCjUA/59bWuGdXjLe4tc9+8K5/ba3+4CaRw6583oo/uJlQFe7UXLyGD6ICGL+TdkkodE7DMx5om5oP1okCMwOuqoUgB7ahI3d8roqaZ/zKLlSgp3QCg0Z0Ai+NmtxxnSBIoy53HbqxseLDBmFneGGj5Ct0yBSL6aaiDw2ubKTDajBVTIexXRtpN/YK1T1ac2sYQcXGZkNZxiagbcbGp1uzIW/QJvhiRL7Wmg3MaxSngrZGRr5ftGgkPiPPojmPPFbKgA75ZcmhkaQZecFUU0s5izxkyqglW1t21lh1DvSWUam1mTGBNnmemGtlLCWyO7RoI1Z2FjUNW6O1OF8C+STbF0BjZS/uQsh0JBTkQbY/gBZLCyF4L5VvOjDibXMRFuxrc/4yOGXj/GQHa+C8BDs1Azpyym4BHdOhkQxPd57jPNPJkZrAcbjXoGdasZiJ8XMzcizGglOtkVgJGzRhx0aSJSbC+VuKkaScDAhgjBqSQ6FGBU2GBLAoB5LYATlELE0HYtIqp2KzYwtaj9vsy4690dbdZtY7RBp34sTD90TrEIp9fZvjCze0ljD4EITeXNBvkqZ+GLg0bmmaXVRsJzaVXRy4NGEpmF1UbC821V0e0Ge1cbN5ceA+CG03TGKX7XqlJw12bd2s+vCk723UmTH9yUWw6nRQSX8kTS2Dg04tSjv7rVGW7Z2c7HWOs+xbdJNlB8GJcR/uxKpdke6mqD3bO+H0maogtnUg+3bCmSY7an2TfWulYo+Trql8vdaPk8Xbd8pgFoSu2lOKkyDbG63aV6jQpt5o9A00WCUORqOPXYrYpWrVil2ie9E6aH3SvD0aiA5aX4GhCehFEPfC7dHkOBjvcBP8Svfcq7YNhWEc96ybkBZdgC9BS+8jYymBl3NyDpgjOnhq9VGcQGg1NIuRJk0uIYmHQKHylqFQB1rqQFJncGLidGyy9HmPTx21UC8//58j9LHn+it89vbNl9duf797+uEn+hvcc37Ei3/ePe28KJsyWly+g0XKbjeldobw+XYzlYvLY1gq1/kEDQW7bHp527gZ5Tss+uXl8cN4Ms9Ww08P4ca7+mZ4tHHr191WyU7utlxfF8Oj72y5dlYMD1i3N8s+Gs4q+GLVLE+GB52YaJbc3/5Yso/Wa3Rbw94TaWee3D6yIrm3EneJ3Uk7cNqy17uYj9jp2unoYp6wvU0nScsSzvO/HM2FsyYqEqifrJKLaSeKU3o1mJx0WyaDSf9Pn8dpvsPt5O4NFtXaiXU6WBROdJyXaNbuaayWg2HZTWNZQduHaHbdenZ4dtN9Mrw+PFtF3LA7Rl+hod2jeGzQMNSQu74arDpKKUGFybVUGRU15NbUUlIVurYqqsZuh9z9FErsUClD/dg2REtDcb+tprQixZ32yXBH6Lbdot2GzguShnfoWhi3s3lBHSEEnphJtibB8okU8n9KoSlXUkqfRaJJCd/3A7QQtj2kH/KOC7UTjV0Ig+ZzuwvbGreTm94nfg52aJuVrG2V/aMg0Qk8zwuiIDDStwaeYY3yeedT/Am1DnzleTjXvu+pUHt8h1rXovYVGnuGn65rraRSkcnqbB8dmMDPMqFDY/ABmeHdV0qHXs3X/+aCbHbTBoI4PjG2EcUfYII/oLaiFARFmNolxCiJenCxBKlKKkWKBVKkHFpxr1S8crRXn/oQvft9+jyd3dKi9gfyzO7Mzn9mnvcvzl6gcB8ffv2OG9g/n33D876PeijU75/teSP9Fwiz356Z3bNG0WLds2c+wB5IhhBCwpQg6BcF2iINQ5L/htIyTTH0M8NDSLKckJRklFIHieO8KMIUH6HbXi7jPEwzEsbjJTKOs7DINpuNg1eZs2m3l+12nJMsLXLutp0QpUhR5A5CsX5WkLQkaLIcfyQv2ZFyMEpClMJWeKNoChQu+AQFdILBwLvu3lESTwZv0J++T5JojOF7L0C8wPNuy4IOovFw97oVOZ7l0oJGhmUbDNlt+3nW6K0kSapWq9qMFmn+Tjvglp+3mmFXB07pVg0NEyTZzNOSBuizF+vmOouV9lDDarZdr1tNWlJTDZxodz6a0dkCtRrDLW8l8Zq4gqskcekkmWGzkw3JO2/X3mAQrEEG5MKDuSsBRxqwzzWdwRH3cQ41H5DT21OAXWN+jL2+gdcJbJtw4LJHzWN01QLOm3EF/tCNpyocuDDg3IZFFf5y3hwB6DcoA7UrHS5XWziyKFYyq3DIN8wW4B9JwABRBDcA5EQUBBHshN2oCjuKYkUQKgLAKxzh7hRO4FVPBp7L4F6rC8h2Ahx2eTcEAVM5vYOkt/oTF2C6ABAO8cgAxDwWBc6nRgUrSLc1QAMC60LEdkB/XwfxRFckYL3yZLfF+n0DGt+Xh4HDymyXf334D22t4TzWW0OXZVkHhl6VDPmCqrYldcaj+sODhcIizD2mru/m81FCm+pIbbWsL3kwvzzf6SzSu8QkkOqWZamrQHow1PFQMySpBowalj+1P9tMbFmFf6msJGZWxmEtOJupAhJA13Wj2eMQKicgN19OX06uf3yYvpxe5crEn/SGfLNR1/f9px+N+3v/sXxSPvhXfGG1pyelodxcdxVFccqu6UYfI1w1H0SA4XLRNDudjmn+ar9aWtWGgvDENAkhiUlMfNREF4ngg/iob1SUVoWq+ADBUkHo4kqXXVqEu+3vcN8/2ZmjVdtu+qQU+t3LmExyzvlm5sycSawf6yeT5shcv9gChtdtAw+wf1OPpWbHB5zC6PRUY9YxyP389E1RVefv5+v1aHrq4cKLFum5lrsulnqHbqlWch47JaQ6kgGnq88bqVSsA6VmLrdtisDxoPW8ZrPZLqDI1+ckYzUW2mRT0ywtQslpdTQ5bFsdEacQ5gmwfQ6H+jB+w/zikgn5LMlxFr5BrUKGZApkyEIhjaGBzyN934eEoaNerGp6WG4PNSkyiEQ2hYLWegOkj5bzzXzlaT3f9LxCG3nm5hHayQLyz20XEL5GDfJ3+S2VSPrMGXwFblivSBYHyEicilf1W5W8086QzKdYRLK4m0Ohy64P4VUISjlmiIUyZIrko9QKPkMuyqiXVBogqnCFuCRyA4cR6shwxXKAM1yQBkweRIjSvB2jFKK1eRBMIrNqEDHI6p9zEbgRmcCvBaDSIp31+KcUaTWNZVahT3Jbh2+gbkn24iRjMiOzYsMJwoxJ1cYFBgbPliMMYph4qPFpE7wJA/JDtk/A7q+A6CJ7SnYLrrCWt2s9RfPLKRarmMjbtu1f3EAlSU2ACMIuDrqu82SK4PJoSLwjyRKfdsJ4XJRccSAInwNuo0qIBKYsifHHtC/JkZqMw0IjlPTY1iE+1XkZElMfNQMVCD7Tz3jaIgsiJBk2XFG8ux5Dt99fLvuYlGZ/8bpWc939lqa2yzSOn09qi/381evX0eCpw7NqNwD87b0cRue7jzvDUDs94iI4T1AvdHqGYwSHqWFMj8fe1Om9aEOIolp+7E2n3fePU8eYHKKGo76Zkf36ksjo0+nMMHC6eTB/0aGFEyYrlNXXQTSIfoxOMrWHIfPX7OzNbm3hOI8L4s3Qr0KwyKgZhJpxu1HXdc1u7WwITz8tx3VLpWgyvfXKPRaSOjMk3my387kX2XBCLDxIZIJjs2GyuIJchtNlKJdA1vleGULEoDTxZVsMWiDakeiWE2WZzSYvefJ/RpDw9A+8vNduxmmPKjHKY+VpFktR5piMlWrn2pVwWXgfush0cZy4mQsWAWzvtlaSpBgj6Td4uKJ1ljrJ8l2GqQrJGW02YaED//mILNGaTZYpjTKmPPcEaqyQzCk+0lAAAqXiaukTvTQgFBcu4GDDDNkwjXXTX97RZz5RvN9mWcixBGfJ7iUxeTC3KJ30xhNgWgSXFYEPQYPJ7IBlGwFmBcANZZBp4uLOISWSbTZbIwsMRgUwPecandp3lSe0PHdF9GrBRYkguwtUd0Bbw5kWsaDDHTY1CKH5fR5nk2ryjXsZDblCSwLFeXkXBQY04VZm+uJN3/Nom03SYHO5IB4WhMRmY1mJbDW+sSKxEjm1slAKFv69oMJrR1MJK56PphVtYykClgKtE+d88Op0jhac+waO5IYdY55500dqJPU+6aUM3EdkHYkriHh8E2mxpVfVSi6dHldT4wahXC/3uzoNNJx6LOY+7s2Makx7k85keHpLhrw5zYe70/H08mX09P4ZtuOHD8+xOjy2aLZ3H19H8ebpx3dUtR3W03+kl54dcEBweoaDO6cUGaKd5jhpD+uHW3r4WEvF6sM9O95O9XKZmJTLYzMYp9PbpUN8xKCibOJn9oIJ708votHHA34eBCe2tDx5Od/tnn6MVoeEarU6HAENTPewF3GTpolFIpWq1+vltM4C6TW9fMHStE2idfQERcwGioQtvU8scoaM3bwoPJAhoGPvvrKepsMJyXvpJbDXanseDhdYc5aul+vYbSyTRddcqo7jTHPs6HaqRILQefr+tNvtTibxsd+cAvyiOTzih83TA/SlREKs73FfSGEeCLrP8VxYFeDHEWZdXvzNrVt4FwOGDjOEYcXqeKQIP4H2RPZ9XraBIIclbJtUT8IPniRUmFNT8DUa8tcaDv8JoRvO+tuttFMwC62OTQWBDXm7xkssZ523wF26+EGNp5cobUMXXNqY6y2Bvf41g00JvkaLEa1AlsqDFQMa/cVzAXj4MXAYEY3cEojXiDSMswEPlet0Uo8eazX4YSDRe0PILRx1a1jOxlAmTXN299TXdVmWimHgftgQ+cXTfbcbHIJut1vt4s6eH9fnXqp6xDtU4YMHfFzdHzPA/YQhPXEl6/6904vCuWrt1qY5mkfX9LMumuvZbFacqerE8H98IeBydVYExjnPKx3Gec/LX4ITKeTxG/zQ97bp8biML6Vor/2wpxLDqaESPxVpmqa5NtWTM8KLB9Dyeez5FcvaKBElPogoirRarUTRhl+EvQfCPV1xCr8KXRbF1UC5YKNpWtwqFPJ567v88P24qwOrvcjRgXzJceq1ldmtMKD+94L/BtwZ8IuQu+LXKqEPv4hL3bzjSoKu4A+BA/2l0TdHCJTL/miUHMWmRdT/c+C1PAJP/EQkocQ13MjtdgL+4y+Cu+B6zeP1H8MnEkeBUzjW0UsAAAAASUVORK5CYII=); 3 | background-size: auto; 4 | background-repeat: repeat, repeat-x; 5 | background-position: 0 0; 6 | transition: background-color 1.6s ease 0s; 7 | overflow: hidden; 8 | color: rgb(255, 255, 235); 9 | } 10 | 11 | .share-view { 12 | position: relative; 13 | width: 100vw; 14 | height: 100vh; 15 | } 16 | 17 | .share-card { 18 | position: absolute; 19 | top: 20%; 20 | left: 50%; 21 | transform: translateX(-50%); 22 | padding: 56rpx; 23 | display: flex; 24 | flex-direction: column; 25 | justify-content: center; 26 | align-items: center; 27 | box-shadow: rgba(0, 0, 0, 0.2) -26rpx 36rpx 20rpx; 28 | } 29 | 30 | .title { 31 | position: absolute; 32 | right: 16.8rpx; 33 | bottom: 16.8rpx; 34 | font-size: 33.6rpx; 35 | padding: 8.4rpx 8.4rpx 16.8rpx; 36 | font-family: TChinese, serif; 37 | } 38 | 39 | .circle { 40 | width: 515.2rpx; 41 | height: 515.2rpx; 42 | border-radius: 50%; 43 | border: 4rpx solid; 44 | display: flex; 45 | justify-content: center; 46 | align-items: center; 47 | overflow: hidden; 48 | } 49 | 50 | .circle .img { 51 | width: 515.2rpx; 52 | height: 515.2rpx; 53 | opacity: 0.8; 54 | } 55 | 56 | .generate-image-button { 57 | position: absolute; 58 | left: 50%; 59 | bottom: -140rpx; 60 | transform: translateX(-50%); 61 | border: none; 62 | border-radius: 8.4rpx; 63 | padding: 16.8rpx 22.4rpx; 64 | font-size: 28rpx; 65 | color: rgb(238, 238, 238); 66 | background: rgb(31, 47, 45); 67 | box-shadow: rgba(0, 0, 0, 0.5) 0 10rpx 18rpx; 68 | } 69 | 70 | .share-card-canvas { 71 | position: absolute; 72 | left: -313px; 73 | width: 313px; 74 | height: 313px; 75 | } 76 | -------------------------------------------------------------------------------- /project.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "项目配置文件", 3 | "packOptions": { 4 | "ignore": [], 5 | "include": [] 6 | }, 7 | "setting": { 8 | "urlCheck": true, 9 | "es6": true, 10 | "enhance": true, 11 | "postcss": true, 12 | "preloadBackgroundData": false, 13 | "minified": true, 14 | "newFeature": true, 15 | "coverView": true, 16 | "nodeModules": false, 17 | "autoAudits": false, 18 | "showShadowRootInWxmlPanel": true, 19 | "scopeDataCheck": false, 20 | "uglifyFileName": false, 21 | "checkInvalidKey": true, 22 | "checkSiteMap": true, 23 | "uploadWithSourceMap": true, 24 | "compileHotReLoad": true, 25 | "useMultiFrameRuntime": false, 26 | "useApiHook": false, 27 | "babelSetting": { 28 | "ignore": [], 29 | "disablePlugins": [], 30 | "outputPath": "" 31 | }, 32 | "useIsolateContext": false, 33 | "useCompilerModule": true, 34 | "userConfirmedUseCompilerModuleSwitch": true, 35 | "packNpmManually": false, 36 | "packNpmRelationList": [], 37 | "minifyWXSS": true, 38 | "minifyWXML": true, 39 | "ignoreUploadUnusedFiles": true 40 | }, 41 | "compileType": "miniprogram", 42 | "libVersion": "2.30.0", 43 | "appid": "wxb959d3519900c3b6", 44 | "projectname": "colors", 45 | "simulatorType": "wechat", 46 | "simulatorPluginLibVersion": {}, 47 | "condition": {}, 48 | "editorSetting": { 49 | "tabIndent": "insertSpaces", 50 | "tabSize": 2 51 | } 52 | } -------------------------------------------------------------------------------- /sitemap.json: -------------------------------------------------------------------------------- 1 | { 2 | "rules": [{ 3 | "action": "allow", 4 | "page": "*" 5 | }] 6 | } 7 | -------------------------------------------------------------------------------- /utils/jinrishici.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 今日诗词V2 Mini-Program-SDK 1.0 3 | * https://www.jinrishici.com 4 | */ 5 | let waitingQueue = [] 6 | let lock = false 7 | const load = callback => { 8 | getTokenAndDo(token => { 9 | wx.request({ 10 | url: 'https://v2.jinrishici.com/one.json?client=mini-progrram-sdk/1.0', 11 | header: { 12 | 'X-User-Token': token 13 | }, 14 | success: res => { 15 | if (res.data.status === "success") { 16 | callback(res.data) 17 | } else { 18 | console.error("今日诗词API 获取古诗词 失败,错误原因:" + res.data.errMessage) 19 | } 20 | }, 21 | fail: () => { 22 | console.error("今日诗词-小程序SDK 获取古诗词失败,可能是网络问题或者您没有添加到域名白名单") 23 | } 24 | }) 25 | }) 26 | } 27 | 28 | const getTokenAndDo = callback => { 29 | let token = wx.getStorageSync("jinrishici-token") 30 | if (token) { 31 | callback(token) 32 | } else { 33 | waitingQueue.push(callback) 34 | if (lock) { 35 | return; 36 | } 37 | lock = true 38 | wx.request({ 39 | url: 'https://v2.jinrishici.com/token?client=mini-progrram-sdk/1.0', 40 | success: res => { 41 | if (res.data.status === "success") { 42 | wx.setStorageSync("jinrishici-token", res.data.data) 43 | lock = false 44 | while (waitingQueue.length > 0) { 45 | waitingQueue.pop()(res.data.data) 46 | } 47 | } else { 48 | console.error("今日诗词API获取 Token 失败,错误原因:" + res.data.errMessage) 49 | lock = false 50 | } 51 | }, 52 | fail: () => { 53 | console.error("今日诗词-小程序SDK 获取 Token 失败,可能是网络问题或者您没有添加到域名白名单") 54 | } 55 | }) 56 | } 57 | } 58 | 59 | module.exports = { 60 | load: load 61 | } -------------------------------------------------------------------------------- /utils/util.js: -------------------------------------------------------------------------------- 1 | export function getCorrectTextColor(rgb = [0, 0, 0]) { 2 | /* 3 | From this W3C document: http://www.webmasterworld.com/r.cgi?f=88&d=9769&url=http://www.w3.org/TR/AERT#color-contrast 4 | Color brightness is determined by the following formula: 5 | ((Red value X 299) + (Green value X 587) + (Blue value X 114)) / 1000 6 | I know this could be more compact, but I think this is easier to read/explain. 7 | */ 8 | const threshold = 130; /* about half of 256. Lower threshold equals more dark text on dark background */ 9 | const [hRed, hGreen, hBlue] = rgb; 10 | 11 | const cBrightness = (hRed * 299 + hGreen * 587 + hBlue * 114) / 1000; 12 | if (cBrightness > threshold) { 13 | return '#50616d'; 14 | } else { 15 | return '#e9f1f6'; 16 | } 17 | } 18 | --------------------------------------------------------------------------------