├── README.md
├── .github
└── workflows
│ └── static.yml
├── generate9.css
├── generate9text.css
├── lipu.css
├── generate9text.js
├── generate9.js
├── lipu.js
├── text.html
├── index.html
└── lipu.html
/README.md:
--------------------------------------------------------------------------------
1 | # 阵营九宫格(Alignment Chart)生成器
2 |
3 | HTML / JS / CSS 的练手项目...
4 |
5 | 代码很糟糕...还请见谅...
6 |
7 | ## 使用
8 |
9 | 输入文字 选择图片 点击生成即可
10 |
11 | ## 配置项
12 |
13 | - 阵营、文字、图片
14 | - 各个字体大小
15 | - 图片大小
16 |
17 | ## 更新历史
18 |
19 | * 2019/1/21 增加作者和水印选项
20 |
21 | * 2019/1/20 增加文字版本生成
22 |
23 | - 2019/1/15 初版上线
24 |
25 |
--------------------------------------------------------------------------------
/.github/workflows/static.yml:
--------------------------------------------------------------------------------
1 | # Simple workflow for deploying static content to GitHub Pages
2 | name: Deploy static content to Pages
3 |
4 | on:
5 | # Runs on pushes targeting the default branch
6 | push:
7 | branches: ["master"]
8 |
9 | # Allows you to run this workflow manually from the Actions tab
10 | workflow_dispatch:
11 |
12 | # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
13 | permissions:
14 | contents: read
15 | pages: write
16 | id-token: write
17 |
18 | # Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
19 | # However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
20 | concurrency:
21 | group: "pages"
22 | cancel-in-progress: false
23 |
24 | jobs:
25 | # Single deploy job since we're just deploying
26 | deploy:
27 | environment:
28 | name: github-pages
29 | url: ${{ steps.deployment.outputs.page_url }}
30 | runs-on: ubuntu-latest
31 | steps:
32 | - name: Checkout
33 | uses: actions/checkout@v4
34 | - name: Setup Pages
35 | uses: actions/configure-pages@v4
36 | - name: Upload artifact
37 | uses: actions/upload-pages-artifact@v3
38 | with:
39 | # Upload entire repository
40 | path: '.'
41 | - name: Deploy to GitHub Pages
42 | id: deployment
43 | uses: actions/deploy-pages@v4
44 |
--------------------------------------------------------------------------------
/generate9.css:
--------------------------------------------------------------------------------
1 | /* table {
2 | border: 1px solid black;
3 | } */
4 |
5 | /* td {
6 | border: 0.5px solid #000000;
7 | } */
8 |
9 | #nine-by-nine{
10 | table-layout: fixed;
11 | width: 900px;
12 | height: 900px;
13 | border: none;
14 | }
15 |
16 | #nine-by-nine > tbody > tr > td {
17 | width: 33%;
18 | height: 33%;
19 | padding: 1%;
20 | border: none;
21 | }
22 |
23 | #nine-by-nine > tbody > tr > td > table {
24 | height: 100%;
25 | width: 100%;
26 | }
27 |
28 | #nine-by-nine > tbody > tr > td > table > tbody {
29 | height: 100%;
30 | width: 100%;
31 | }
32 |
33 | #nine-by-nine > tbody > tr > td > table > tbody > .cell-img {
34 | height: 70%;
35 | }
36 |
37 | #nine-by-nine > tbody > tr > td > table > tbody > .cell-img > td {
38 | height: 70%;
39 | }
40 |
41 | .text {
42 | text-align: center;
43 | color: white;
44 | }
45 |
46 | .type {
47 | /* font-size: larger; */
48 | font-weight: bolder;
49 | }
50 |
51 | .img_preview{
52 | display: none;
53 | }
54 |
55 | #final-div{
56 | background-color: black;
57 | }
58 |
59 | #final-title{
60 | text-align: center;
61 | font-weight: bolder;
62 | color: white;
63 | }
64 |
65 | #final-watermark{
66 | text-align: center;
67 | color:white;
68 | font-size: 16px;
69 | }
70 |
71 | #final-author{
72 | text-align: right;
73 | color:white;
74 | }
75 |
76 | /* .cell-img > img {
77 | height: inherit; */
78 | /* .img-repsonsive(); */
79 | /* .center-block(); */
80 | /* } */
81 |
82 | /* #nine-by-nine > tbody > tr > td > .text{
83 | text-align: center;
84 | }
85 |
86 | #nine-by-nine > tbody > tr > td > .text */
--------------------------------------------------------------------------------
/generate9text.css:
--------------------------------------------------------------------------------
1 | /* table {
2 | border: 1px solid black;
3 | } */
4 |
5 | /* td {
6 | border: 0.5px solid #000000;
7 | } */
8 |
9 | #nine-by-nine{
10 | table-layout: fixed;
11 | width: 900px;
12 | height: 900px;
13 | border: none;
14 | }
15 |
16 | #nine-by-nine > tbody > tr > td {
17 | width: 33%;
18 | height: 33%;
19 | padding: 1%;
20 | border: none;
21 | }
22 |
23 | #nine-by-nine > tbody > tr > td > table {
24 | height: 100%;
25 | width: 100%;
26 | }
27 |
28 | #nine-by-nine > tbody > tr > td > table > tbody {
29 | height: 100%;
30 | width: 100%;
31 | }
32 |
33 | #nine-by-nine > tbody > tr > td > table > tbody > .cell-img {
34 | height: 70%;
35 | color: white;
36 | text-align: center;
37 | }
38 |
39 | #nine-by-nine > tbody > tr > td > table > tbody > .cell-img > td {
40 | height: 70%;
41 | }
42 |
43 | .text {
44 | text-align: center;
45 | color: white;
46 | }
47 |
48 | .type {
49 | /* font-size: larger; */
50 | font-weight: bolder;
51 | }
52 |
53 | .file-box{
54 | display: none;
55 | border: 1px solid black;
56 | }
57 |
58 | .img_preview{
59 | display: none;
60 | }
61 |
62 | #final-div{
63 | background-color: black;
64 | }
65 |
66 | #final-title{
67 | text-align: center;
68 | font-weight: bolder;
69 | color: white;
70 | }
71 |
72 | #final-watermark{
73 | text-align: center;
74 | color:white;
75 | font-size: 16px;
76 | }
77 |
78 | #final-author{
79 | text-align: right;
80 | color:white;
81 | }
82 | /* .cell-img > img {
83 | height: inherit; */
84 | /* .img-repsonsive(); */
85 | /* .center-block(); */
86 | /* } */
87 |
88 | /* #nine-by-nine > tbody > tr > td > .text{
89 | text-align: center;
90 | }
91 |
92 | #nine-by-nine > tbody > tr > td > .text */
--------------------------------------------------------------------------------
/lipu.css:
--------------------------------------------------------------------------------
1 | /* table {
2 | border: 1px solid black;
3 | } */
4 |
5 | /* td {
6 | border: 0.5px solid #000000;
7 | } */
8 |
9 | #four-by-four{
10 | table-layout: fixed;
11 | width: 900px;
12 | height: 900px;
13 | border: none;
14 | }
15 |
16 | #four-by-four > tbody > tr > td {
17 | width: 30%;
18 | height: 24%;
19 | padding: 1%;
20 | border: none;
21 | }
22 |
23 | #four-by-four > tbody > tr:first-child > td {
24 | height: 10%;
25 | }
26 |
27 |
28 | /* #four-by-four > tbody > tr:first-child > td > table > tbody{
29 | height: unset;
30 | }
31 |
32 |
33 | #four-by-four > tbody > tr:first-child > td > table{
34 | height: unset;
35 | } */
36 |
37 |
38 | #four-by-four > tbody > tr > td > table {
39 | height: 100%;
40 | width: 100%;
41 | }
42 |
43 | #four-by-four > tbody > tr > td > table > tbody {
44 | height: 100%;
45 | width: 100%;
46 | }
47 |
48 | #four-by-four > tbody > tr > td > table > tbody > .cell-img {
49 | height: 70%;
50 | }
51 |
52 | #four-by-four > tbody > tr > td > table > tbody > .cell-img > td {
53 | height: 70%;
54 | }
55 |
56 | .text {
57 | text-align: center;
58 | color: black;
59 | }
60 |
61 | .word {
62 | text-align: center;
63 | color: rgb(29, 28, 28);
64 | }
65 |
66 | .type {
67 | /* font-size: larger; */
68 | font-weight: bolder;
69 | }
70 |
71 | .img_preview{
72 | display: none;
73 | }
74 |
75 | #final-div{
76 | background-color: white;
77 | }
78 |
79 | #final-title{
80 | text-align: center;
81 | font-weight: bolder;
82 | color: black;
83 | }
84 |
85 | #final-watermark{
86 | text-align: center;
87 | color:black;
88 | font-size: 16px;
89 | }
90 |
91 | #final-author{
92 | text-align: right;
93 | color:black;
94 | }
95 |
96 | /* .cell-img > img {
97 | height: inherit; */
98 | /* .img-repsonsive(); */
99 | /* .center-block(); */
100 | /* } */
101 |
102 | /* #four-by-four > tbody > tr > td > .text{
103 | text-align: center;
104 | }
105 |
106 | #four-by-four > tbody > tr > td > .text */
--------------------------------------------------------------------------------
/generate9text.js:
--------------------------------------------------------------------------------
1 |
2 | function toggle_pro_mode(){
3 | $("#pro_mode_div").fadeToggle();
4 | }
5 |
6 |
7 | function final_table() {
8 |
9 | // generate table
10 | var lasttable = document.getElementById('final-div');
11 | if (lasttable != null) {
12 | lasttable.parentNode.removeChild(lasttable);
13 | }
14 |
15 |
16 | var data = [];
17 |
18 | var color = ["#fdfdfd","#c2c2c2","#9444bc","#c27c32","#6ca65c","#d3de9a","#9f9c9d","#4259a7","#c11417"];
19 |
20 | // get input
21 | var input_table = document.getElementById('input_table');
22 | var table_rows = input_table.children;
23 | for (var i = 0; i < table_rows.length; i++) {
24 | var table_cells = table_rows[i].children;
25 | for (var j = 0; j < table_cells.length; j++) {
26 | var table_cell = table_cells[j];
27 | var cell_data = table_cell.firstElementChild;
28 | data.push(cell_data);
29 | // console.log(table_cell.firstElementChild);
30 | }
31 | }
32 |
33 | // console.log(data);
34 |
35 | var table_width = document.getElementById('width').value;
36 | var table_height = document.getElementById('height').value;
37 | var cell_width = table_width/3;
38 | var cell_height = table_height/3;
39 | var img_height = cell_height*0.7*0.9;
40 | var img_width = cell_width*0.9;
41 | var title_size = document.getElementById('size0').value;
42 | var type_size = document.getElementById('size1').value;
43 | var word_size = document.getElementById('size2').value;
44 |
45 | var title = document.getElementById('title').value;
46 | var author = document.getElementById("creator").value;
47 |
48 | //generate new table
49 | var final_div = document.createElement('div');
50 | final_div.id = "final-div";
51 | final_div.style.cssText+="width:"+table_width+"px;";
52 | console.log(final_div.style.cssText);
53 | console.log("here!");
54 | document.getElementById('table_show').appendChild(final_div);
55 |
56 |
57 | if(title.length!=0){
58 | var final_title = document.createElement('p');
59 | final_title.style.cssText+="font-size:"+title_size+"px;"
60 | final_title.textContent = title;
61 | final_title.id = 'final-title';
62 | final_div.appendChild(final_title);
63 | }
64 |
65 | if(author.length!=0){
66 | var final_author = document.createElement('p');
67 | final_author.style.cssText+="font-size:"+title_size/4+"px;"
68 | final_author.style.cssText+="margin-right:"+table_width/100+"px;"
69 | final_author.textContent = author;
70 | final_author.id = 'final-author';
71 | final_div.appendChild(final_author);
72 | }
73 |
74 |
75 | var final_table = document.createElement('table');
76 | final_div.appendChild(final_table);
77 | final_table.style.cssText+="background-color: black;table-layout: fixed; height:"+table_width+"px; width:"+table_height+"px;";
78 | final_table.classList.add('table');
79 | final_table.classList.add('table-bordered');
80 | final_table.id = 'nine-by-nine';
81 |
82 | var final_table_c = final_table;
83 |
84 | if(document.getElementById("watermark").checked){
85 | var final_watermark = document.createElement("p");
86 | final_watermark.id = "final-watermark";
87 | final_watermark.style.cssText+="width:"+table_width+"px;";
88 | final_watermark.innerHTML="由⑨宫格生成器生成
https://nekonull.me/9"
89 | final_div.appendChild(final_watermark);
90 | }
91 |
92 |
93 |
94 |
95 | final_table = document.createElement('tbody');
96 | final_table_c.appendChild(final_table);
97 |
98 | for (var i = 0; i < 3; i++) {
99 | var row = document.createElement('tr');
100 | final_table.appendChild(row);
101 | for (var j = 0; j < 3; j++) {
102 | var cell = document.createElement('td');
103 | cell.classList.add('cell');
104 | row.appendChild(cell);
105 |
106 | var cell_table = document.createElement('table');
107 | cell.appendChild(cell_table);
108 | var cell_tbody = document.createElement('tbody');
109 | cell_table.appendChild(cell_tbody);
110 | var cell_tr_img = document.createElement('tr');
111 | cell_tr_img.classList.add('cell-img');
112 | cell_tr_img.style.cssText+="border: 1px solid "+color[3*i+j]+";";
113 | var cell_tr_text = document.createElement('tr');
114 | cell_tbody.appendChild(cell_tr_img);
115 | cell_tbody.appendChild(cell_tr_text);
116 | var cell_tr_img_td = document.createElement('td');
117 | var cell_tr_text_td = document.createElement('td');
118 | cell_tr_text_td.classList.add("text");
119 | cell_tr_img.appendChild(cell_tr_img_td);
120 | cell_tr_text.appendChild(cell_tr_text_td);
121 |
122 | // var imgn = document.createElement('img');
123 | // var srcimg = data[3*i + j].children[2].children[0];
124 | // imgn.src = srcimg.src;
125 | // imgn.classList.add("center-block");
126 | // imgn.classList.add("img-repsonsive");
127 | // var img_new_height=0;
128 | // var img_new_width=0;
129 |
130 | // if(srcimg.height/img_height>srcimg.width/img_width){
131 | // imgn.style.cssText+="height: "+img_height+"px;"
132 | // imgn.style.cssText+="width: "+srcimg.width * img_height / srcimg.height +"px;"
133 | // } else {
134 | // imgn.style.cssText+="width: "+img_width+"px;"
135 | // imgn.style.cssText+="height: "+srcimg.height * img_width / srcimg.width +"px;"
136 | // }
137 |
138 | // cell_tr_img_td.appendChild(imgn);
139 |
140 | var typew = document.createElement('div');
141 | typew.textContent = data[3*i + j].children[0].value;
142 | typew.classList.add("type");
143 | typew.style.cssText+="font-size: "+type_size+"px;";
144 | typew.style.cssText+="color: "+color[3*i+j]+";";
145 | cell_tr_text_td.appendChild(typew);
146 |
147 | var wordw = document.createElement('div');
148 | wordw.textContent = data[3*i + j].children[1].value;
149 | wordw.classList.add("word");
150 | wordw.style.cssText+="font-size: "+word_size+"px;";
151 | // cell_tr_text_td.appendChild(wordw);
152 | cell_tr_img_td.appendChild(wordw);
153 | }
154 | }
155 |
156 |
157 |
158 | // get picture
159 | // draw();
160 |
161 | }
162 |
163 | function draw(){
164 |
165 | var cont = document.getElementById('img_show_container');
166 |
167 | while (cont.firstChild) {
168 | cont.removeChild(cont.firstChild);
169 | }
170 |
171 | html2canvas(document.getElementById('final-div'), {
172 | onrendered: function(canvas){
173 | document.getElementById('img_show_container').appendChild(canvas);
174 | var table = document.getElementById('final-div');
175 | table.parentNode.removeChild(table);
176 | }
177 | });
178 |
179 |
180 | // table.style.cssText+="visability: hidden;";
181 | }
182 |
183 | function wrapText(context, text, x, y, maxWidth, lineHeight) {
184 | var words = text.split('');
185 | var line = '';
186 |
187 | for (var n = 0; n < words.length; n++) {
188 | var testLine = line + words[n] + '';
189 | var metrics = context.measureText(testLine);
190 | var testWidth = metrics.width;
191 | if (testWidth > maxWidth && n > 0) {
192 | context.fillText(line, x, y);
193 | line = words[n] + '';
194 | y += lineHeight;
195 | }
196 | else {
197 | line = testLine;
198 | }
199 | }
200 | context.fillText(line, x, y);
201 | }
202 |
203 |
204 | function imgPreview(fileDom) {
205 | //判断是否支持FileReader
206 | if (window.FileReader) {
207 | var reader = new FileReader();
208 | } else {
209 | alert("您的设备不支持图片预览功能,如需该功能请升级您的设备!");
210 | }
211 | //获取文件
212 | var file = fileDom.files[0];
213 | var imageType = /^image\//;
214 | //是否是图片
215 | if (!imageType.test(file.type)) {
216 | alert("请选择图片!");
217 | return;
218 | }
219 | var father = fileDom.parentNode;
220 | var img = father.firstElementChild;
221 | //读取完成
222 | reader.onload = function (e) {
223 | //获取图片dom
224 | // var img = document.getElementById("preview");
225 | //图片路径设置为读取的图片
226 | img.src = e.target.result;
227 | };
228 | reader.readAsDataURL(file);
229 | // img.style.cssText="display: none;"
230 | }
--------------------------------------------------------------------------------
/generate9.js:
--------------------------------------------------------------------------------
1 |
2 | function toggle_pro_mode(){
3 | $("#pro_mode_div").fadeToggle();
4 | }
5 |
6 | function final_table() {
7 |
8 | // generate table
9 | var lasttable = document.getElementById('final-div');
10 | if (lasttable != null) {
11 | lasttable.parentNode.removeChild(lasttable);
12 | }
13 |
14 |
15 | var data = [];
16 |
17 | var color = ["#fdfdfd","#c2c2c2","#9444bc","#c27c32","#6ca65c","#d3de9a","#9f9c9d","#4259a7","#c11417"];
18 |
19 | // get input
20 | var input_table = document.getElementById('input_table');
21 | var table_rows = input_table.children;
22 | for (var i = 0; i < table_rows.length; i++) {
23 | var table_cells = table_rows[i].children;
24 | for (var j = 0; j < table_cells.length; j++) {
25 | var table_cell = table_cells[j];
26 | var cell_data = table_cell.firstElementChild;
27 | data.push(cell_data);
28 | // console.log(table_cell.firstElementChild);
29 | }
30 | }
31 |
32 | // console.log(data);
33 |
34 | var table_width = document.getElementById('width').value;
35 | var table_height = document.getElementById('height').value;
36 | var cell_width = table_width/3;
37 | var cell_height = table_height/3;
38 | var img_height = cell_height*0.7*0.9;
39 | var img_width = cell_width*0.9;
40 | var title_size = document.getElementById('size0').value;
41 | var type_size = document.getElementById('size1').value;
42 | var word_size = document.getElementById('size2').value;
43 |
44 | var title = document.getElementById('title').value;
45 | var author = document.getElementById("creator").value;
46 |
47 | //generate new table
48 | var final_div = document.createElement('div');
49 | final_div.id = "final-div";
50 | final_div.style.cssText+="width:"+table_width+"px;";
51 | console.log(final_div.style.cssText);
52 | console.log("here!");
53 | document.getElementById('table_show').appendChild(final_div);
54 |
55 | if(title.length!=0){
56 | var final_title = document.createElement('p');
57 | final_title.style.cssText+="font-size:"+title_size+"px;"
58 | final_title.textContent = title;
59 | final_title.id = 'final-title';
60 | final_div.appendChild(final_title);
61 | }
62 |
63 | if(author.length!=0){
64 | var final_author = document.createElement('p');
65 | final_author.style.cssText+="font-size:"+title_size/4+"px;"
66 | final_author.style.cssText+="margin-right:"+table_width/100+"px;"
67 | final_author.textContent = author;
68 | final_author.id = 'final-author';
69 | final_div.appendChild(final_author);
70 | }
71 |
72 |
73 | var final_table = document.createElement('table');
74 | final_div.appendChild(final_table);
75 | final_table.style.cssText+="background-color: black;table-layout: fixed; height:"+table_width+"px; width:"+table_height+"px;";
76 | final_table.classList.add('table');
77 | final_table.classList.add('table-bordered');
78 | final_table.id = 'nine-by-nine';
79 |
80 | var final_table_c = final_table;
81 |
82 | if(document.getElementById("watermark").checked){
83 | var final_watermark = document.createElement("p");
84 | final_watermark.id = "final-watermark";
85 | final_watermark.style.cssText+="width:"+table_width+"px;";
86 | final_watermark.innerHTML="由⑨宫格生成器生成
https://nekonull.me/9"
87 | final_div.appendChild(final_watermark);
88 | }
89 |
90 |
91 |
92 |
93 | final_table = document.createElement('tbody');
94 | final_table_c.appendChild(final_table);
95 |
96 | for (var i = 0; i < 3; i++) {
97 | var row = document.createElement('tr');
98 | final_table.appendChild(row);
99 | for (var j = 0; j < 3; j++) {
100 | var cell = document.createElement('td');
101 | cell.classList.add('cell');
102 | row.appendChild(cell);
103 |
104 | var cell_table = document.createElement('table');
105 | cell.appendChild(cell_table);
106 | var cell_tbody = document.createElement('tbody');
107 | cell_table.appendChild(cell_tbody);
108 | var cell_tr_img = document.createElement('tr');
109 | cell_tr_img.classList.add('cell-img');
110 | cell_tr_img.style.cssText+="border: 1px solid "+color[3*i+j]+";";
111 | var cell_tr_text = document.createElement('tr');
112 | cell_tbody.appendChild(cell_tr_img);
113 | cell_tbody.appendChild(cell_tr_text);
114 | var cell_tr_img_td = document.createElement('td');
115 | var cell_tr_text_td = document.createElement('td');
116 | cell_tr_text_td.classList.add("text");
117 | cell_tr_img.appendChild(cell_tr_img_td);
118 | cell_tr_text.appendChild(cell_tr_text_td);
119 |
120 | var imgn = document.createElement('img');
121 | var srcimg = data[3*i + j].children[2].children[0];
122 | imgn.src = srcimg.src;
123 | imgn.classList.add("center-block");
124 | imgn.classList.add("img-repsonsive");
125 | var img_new_height=0;
126 | var img_new_width=0;
127 |
128 | if(srcimg.height/img_height>srcimg.width/img_width){
129 | imgn.style.cssText+="height: "+img_height+"px;"
130 | imgn.style.cssText+="width: "+srcimg.width * img_height / srcimg.height +"px;"
131 | } else {
132 | imgn.style.cssText+="width: "+img_width+"px;"
133 | imgn.style.cssText+="height: "+srcimg.height * img_width / srcimg.width +"px;"
134 | }
135 |
136 | cell_tr_img_td.appendChild(imgn);
137 |
138 | var typew = document.createElement('div');
139 | typew.textContent = data[3*i + j].children[0].value;
140 | typew.classList.add("type");
141 | typew.style.cssText+="font-size: "+type_size+"px;";
142 | typew.style.cssText+="color: "+color[3*i+j]+";";
143 | cell_tr_text_td.appendChild(typew);
144 |
145 | var wordw = document.createElement('div');
146 | wordw.textContent = data[3*i + j].children[1].value;
147 | wordw.classList.add("word");
148 | wordw.style.cssText+="font-size: "+word_size+"px;";
149 | cell_tr_text_td.appendChild(wordw);
150 | }
151 | }
152 |
153 |
154 |
155 | // get picture
156 | // draw();
157 |
158 | }
159 |
160 | function draw(){
161 |
162 | var cont = document.getElementById('img_show_container');
163 |
164 | while (cont.firstChild) {
165 | cont.removeChild(cont.firstChild);
166 | }
167 |
168 | html2canvas(document.getElementById('final-div'), {
169 | onrendered: function(canvas){
170 | document.getElementById('img_show_container').appendChild(canvas);
171 | var table = document.getElementById('final-div');
172 | table.parentNode.removeChild(table);
173 | }
174 | });
175 |
176 |
177 | // table.style.cssText+="visability: hidden;";
178 | }
179 |
180 | function wrapText(context, text, x, y, maxWidth, lineHeight) {
181 | var words = text.split('');
182 | var line = '';
183 |
184 | for (var n = 0; n < words.length; n++) {
185 | var testLine = line + words[n] + '';
186 | var metrics = context.measureText(testLine);
187 | var testWidth = metrics.width;
188 | if (testWidth > maxWidth && n > 0) {
189 | context.fillText(line, x, y);
190 | line = words[n] + '';
191 | y += lineHeight;
192 | }
193 | else {
194 | line = testLine;
195 | }
196 | }
197 | context.fillText(line, x, y);
198 | }
199 |
200 |
201 | function imgPreview(fileDom) {
202 | //判断是否支持FileReader
203 | if (window.FileReader) {
204 | var reader = new FileReader();
205 | } else {
206 | alert("您的设备不支持图片预览功能,如需该功能请升级您的设备!");
207 | }
208 | //获取文件
209 | var file = fileDom.files[0];
210 | var imageType = /^image\//;
211 | //是否是图片
212 | if (!imageType.test(file.type)) {
213 | alert("请选择图片!");
214 | return;
215 | }
216 | var father = fileDom.parentNode;
217 | var img = father.firstElementChild;
218 | //读取完成
219 | reader.onload = function (e) {
220 | //获取图片dom
221 | // var img = document.getElementById("preview");
222 | //图片路径设置为读取的图片
223 | img.src = e.target.result;
224 | };
225 | reader.readAsDataURL(file);
226 | img.style.cssText="display: block;"
227 | }
228 |
229 | // 支持直接粘贴图片
230 | function handlePaste(event) {
231 | var items = (event.clipboardData || event.originalEvent.clipboardData).items;
232 | var targetElement = event.target;
233 | if (targetElement.tagName === 'INPUT') {
234 | targetElement = targetElement.parentElement;
235 | }
236 | for (var index in items) {
237 | var item = items[index];
238 | if (item.kind === 'file') {
239 | var blob = item.getAsFile();
240 | var reader = new FileReader();
241 | reader.onload = function(event){
242 | var imgElement = targetElement.querySelector('.img-preview');
243 |
244 | console.log("imgElement", imgElement);
245 | if (imgElement) {
246 | imgElement.src = event.target.result;
247 | }
248 | };
249 | reader.readAsDataURL(blob);
250 | }
251 | }
252 | targetElement.querySelector('.img-preview').style.cssText="display: block;"
253 | }
254 |
255 | function clearImage(event) {
256 | var targetElement = event.target;
257 | if (targetElement.tagName === 'BUTTON') {
258 | targetElement = targetElement.parentElement;
259 | }
260 | targetElement.querySelector('.img-preview').src = '';
261 | targetElement.querySelector('.img-preview').style.cssText="display: none;"
262 | targetElement.querySelector('#input_file').value = '';
263 | }
--------------------------------------------------------------------------------
/lipu.js:
--------------------------------------------------------------------------------
1 |
2 | function toggle_pro_mode(){
3 | $("#pro_mode_div").fadeToggle();
4 | }
5 |
6 | function final_table() {
7 |
8 | // generate table
9 | var lasttable = document.getElementById('final-div');
10 | if (lasttable != null) {
11 | lasttable.parentNode.removeChild(lasttable);
12 | }
13 |
14 |
15 | var data = [];
16 |
17 | var color = ["#000000","#3d3d3d","#9444bc","#c27c32","#6ca65c","#7d8f21","#9f9c9d","#4259a7","#c11417"];
18 |
19 | // get input
20 | var input_table = document.getElementById('input_table');
21 | var table_rows = input_table.children;
22 | for (var i = 0; i < table_rows.length; i++) {
23 | var table_cells = table_rows[i].children;
24 | for (var j = 0; j < table_cells.length; j++) {
25 | var table_cell = table_cells[j];
26 | var cell_data = table_cell.firstElementChild;
27 | data.push(cell_data);
28 | // console.log(table_cell.firstElementChild);
29 | }
30 | }
31 |
32 | // console.log(data);
33 |
34 | var table_width = document.getElementById('width').value;
35 | var table_height = document.getElementById('height').value;
36 | var cell_width = table_width/4;
37 | var cell_height = table_height/4;
38 |
39 | var first_row_height = cell_height/2;
40 | var first_col_width = cell_width*0.75;
41 |
42 | var img_height = cell_height*0.7*0.9;
43 | var img_width = cell_width*0.9;
44 | var title_size = document.getElementById('size0').value;
45 | var type_size = document.getElementById('size1').value;
46 | var word_size = document.getElementById('size2').value;
47 | var internal_size = document.getElementById('size3').value;
48 |
49 | var title = document.getElementById('title').value;
50 | var author = document.getElementById("creator").value;
51 |
52 | //generate new table
53 | var final_div = document.createElement('div');
54 | final_div.id = "final-div";
55 | final_div.style.cssText+="width:"+table_width+"px;";
56 | console.log(final_div.style.cssText);
57 | console.log("here!");
58 | document.getElementById('table_show').appendChild(final_div);
59 |
60 | if(title.length!=0){
61 | var final_title = document.createElement('p');
62 | final_title.style.cssText+="font-size:"+title_size+"px;"
63 | final_title.textContent = title;
64 | final_title.id = 'final-title';
65 | final_div.appendChild(final_title);
66 | }
67 |
68 | if(author.length!=0){
69 | var final_author = document.createElement('p');
70 | final_author.style.cssText+="font-size:"+title_size/4+"px;"
71 | final_author.style.cssText+="margin-right:"+table_width/100+"px;"
72 | final_author.textContent = author;
73 | final_author.id = 'final-author';
74 | final_div.appendChild(final_author);
75 | }
76 |
77 |
78 | var final_table = document.createElement('table');
79 | final_div.appendChild(final_table);
80 | final_table.style.cssText+="background-color: white;table-layout: fixed; height:"+table_width+"px; width:"+table_height+"px;";
81 | final_table.classList.add('table');
82 | final_table.classList.add('table-bordered');
83 | final_table.id = 'four-by-four';
84 |
85 | var final_table_c = final_table;
86 |
87 | if(document.getElementById("watermark").checked){
88 | var final_watermark = document.createElement("p");
89 | final_watermark.id = "final-watermark";
90 | final_watermark.style.cssText+="width:"+table_width+"px;";
91 | final_watermark.innerHTML="由逐渐离谱生成器生成
https://nekonull.me/9/lipu.html"
92 | final_div.appendChild(final_watermark);
93 | }
94 |
95 |
96 |
97 |
98 | final_table = document.createElement('tbody');
99 | final_table_c.appendChild(final_table);
100 |
101 | for (var i = 0; i < 4; i++) {
102 | var row = document.createElement('tr');
103 | final_table.appendChild(row);
104 | for (var j = 0; j < 4; j++) {
105 | var cell = document.createElement('td');
106 | cell.classList.add('cell');
107 | row.appendChild(cell);
108 |
109 | var cell_table = document.createElement('table');
110 | cell.appendChild(cell_table);
111 | var cell_tbody = document.createElement('tbody');
112 | cell_table.appendChild(cell_tbody);
113 | if (i!=0 && j!=0){
114 | var cell_tr_img = document.createElement('tr');
115 | cell_tr_img.classList.add('cell-img');
116 | cell_tr_img.style.cssText+="border: 1px solid "+color[3*(i-1)+(j-1)]+";";
117 | cell_tbody.appendChild(cell_tr_img);
118 | }
119 |
120 | var cell_tr_text = document.createElement('tr');
121 | cell_tbody.appendChild(cell_tr_text);
122 | var cell_tr_img_td = document.createElement('td');
123 | var cell_tr_text_td = document.createElement('td');
124 | cell_tr_text_td.classList.add("text");
125 | if (i!=0 && j!=0){
126 | cell_tr_img.appendChild(cell_tr_img_td);
127 | }
128 | cell_tr_text.appendChild(cell_tr_text_td);
129 |
130 | if (i!=0&&j!=0){
131 | var imgn = document.createElement('img');
132 | var srcimg = data[4*i + j].children[2].children[0];
133 | imgn.src = srcimg.src;
134 | imgn.classList.add("center-block");
135 | imgn.classList.add("img-repsonsive");
136 | var img_new_height=0;
137 | var img_new_width=0;
138 |
139 | if(srcimg.height/img_height>srcimg.width/img_width){
140 | imgn.style.cssText+="height: "+img_height+"px;"
141 | imgn.style.cssText+="width: "+srcimg.width * img_height / srcimg.height +"px;"
142 | } else {
143 | imgn.style.cssText+="width: "+img_width+"px;"
144 | imgn.style.cssText+="height: "+srcimg.height * img_width / srcimg.width +"px;"
145 | }
146 |
147 | cell_tr_img_td.appendChild(imgn);
148 | }
149 |
150 | var typew = document.createElement('div');
151 | typew.textContent = data[4*i + j].children[0].value;
152 | typew.classList.add("type");
153 | if(i==0 || j==0){
154 | typew.style.cssText+="font-size: "+type_size+"px;";
155 | } else {
156 | typew.style.cssText+="font-size: "+internal_size+"px;";
157 | }
158 |
159 | if (i!=0 && j!=0){
160 | typew.style.cssText+="color: "+color[3*(i-1)+(j-1)]+";";
161 | }
162 | cell_tr_text_td.appendChild(typew);
163 |
164 | var wordw = document.createElement('div');
165 | wordw.textContent = data[4*i + j].children[1].value;
166 | wordw.classList.add("word");
167 | wordw.style.cssText+="font-size: "+word_size+"px;";
168 | cell_tr_text_td.appendChild(wordw);
169 | }
170 | }
171 |
172 |
173 |
174 | // get picture
175 | // draw();
176 |
177 | }
178 |
179 | function draw(){
180 |
181 | var cont = document.getElementById('img_show_container');
182 |
183 | while (cont.firstChild) {
184 | cont.removeChild(cont.firstChild);
185 | }
186 |
187 | html2canvas(document.getElementById('final-div'), {
188 | onrendered: function(canvas){
189 | document.getElementById('img_show_container').appendChild(canvas);
190 | var table = document.getElementById('final-div');
191 | table.parentNode.removeChild(table);
192 | }
193 | });
194 |
195 |
196 | // table.style.cssText+="visability: hidden;";
197 | }
198 |
199 | function wrapText(context, text, x, y, maxWidth, lineHeight) {
200 | var words = text.split('');
201 | var line = '';
202 |
203 | for (var n = 0; n < words.length; n++) {
204 | var testLine = line + words[n] + '';
205 | var metrics = context.measureText(testLine);
206 | var testWidth = metrics.width;
207 | if (testWidth > maxWidth && n > 0) {
208 | context.fillText(line, x, y);
209 | line = words[n] + '';
210 | y += lineHeight;
211 | }
212 | else {
213 | line = testLine;
214 | }
215 | }
216 | context.fillText(line, x, y);
217 | }
218 |
219 |
220 | function imgPreview(fileDom) {
221 | //判断是否支持FileReader
222 | if (window.FileReader) {
223 | var reader = new FileReader();
224 | } else {
225 | alert("您的设备不支持图片预览功能,如需该功能请升级您的设备!");
226 | }
227 | //获取文件
228 | var file = fileDom.files[0];
229 | var imageType = /^image\//;
230 | //是否是图片
231 | if (!imageType.test(file.type)) {
232 | alert("请选择图片!");
233 | return;
234 | }
235 | var father = fileDom.parentNode;
236 | var img = father.firstElementChild;
237 | //读取完成
238 | reader.onload = function (e) {
239 | //获取图片dom
240 | // var img = document.getElementById("preview");
241 | //图片路径设置为读取的图片
242 | img.src = e.target.result;
243 | };
244 | reader.readAsDataURL(file);
245 | img.style.cssText="display: block;"
246 | }
247 |
248 | // 支持直接粘贴图片
249 | function handlePaste(event) {
250 | var items = (event.clipboardData || event.originalEvent.clipboardData).items;
251 | var targetElement = event.target;
252 | if (targetElement.tagName === 'INPUT') {
253 | targetElement = targetElement.parentElement;
254 | }
255 | for (var index in items) {
256 | var item = items[index];
257 | if (item.kind === 'file') {
258 | var blob = item.getAsFile();
259 | var reader = new FileReader();
260 | reader.onload = function(event){
261 | var imgElement = targetElement.querySelector('.img-preview');
262 |
263 | console.log("imgElement", imgElement);
264 | if (imgElement) {
265 | imgElement.src = event.target.result;
266 | }
267 | };
268 | reader.readAsDataURL(blob);
269 | }
270 | }
271 | targetElement.querySelector('.img-preview').style.cssText="display: block;"
272 | }
273 |
274 | function clearImage(event) {
275 | var targetElement = event.target;
276 | if (targetElement.tagName === 'BUTTON') {
277 | targetElement = targetElement.parentElement;
278 | }
279 | targetElement.querySelector('.img-preview').src = '';
280 | targetElement.querySelector('.img-preview').style.cssText="display: none;"
281 | targetElement.querySelector('#input_file').value = '';
282 | }
--------------------------------------------------------------------------------
/text.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
|
78 |
79 |
80 |
81 |
87 |
82 |
86 | |
88 |
89 |
90 |
91 |
97 |
92 |
96 | |
98 |
99 |
100 |
101 |
102 |
108 |
103 |
107 | |
109 |
|
112 |
113 |
114 |
115 |
121 |
116 |
120 | |
122 |
123 |
124 |
125 |
131 |
126 |
130 | |
132 |
133 |
134 |
135 |
136 |
142 |
137 |
141 | |
143 |
|
146 |
147 |
148 |
149 |
155 |
150 |
154 | |
156 |
157 |
158 |
159 |
165 |
160 |
164 | |
166 |
167 |
168 |
169 |
170 |
176 |
171 |
175 | |
177 |
|
79 |
80 |
81 |
82 |
90 |
83 |
89 | |
91 |
92 |
93 |
94 |
102 |
95 |
101 | |
103 |
104 |
105 |
106 |
107 |
115 |
108 |
114 | |
116 |
|
119 |
120 |
121 |
122 |
130 |
123 |
129 | |
131 |
132 |
133 |
134 |
142 |
135 |
141 | |
143 |
144 |
145 |
146 |
147 |
155 |
148 |
154 | |
156 |
|
159 |
160 |
161 |
162 |
170 |
163 |
169 | |
171 |
172 |
173 |
174 |
182 |
175 |
181 | |
183 |
184 |
185 |
186 |
187 |
195 |
188 |
194 | |
196 |
|
79 |
80 |
81 |
82 |
83 | |
84 |
85 |
86 |
87 |
88 | |
89 |
90 |
91 |
92 |
93 |
94 | |
95 |
96 |
97 |
98 |
99 |
100 | |
101 |
|
104 |
105 |
106 |
107 |
108 | |
109 |
110 |
111 |
112 |
120 |
113 |
119 | |
121 |
122 |
123 |
124 |
125 |
133 |
126 |
132 | |
134 |
135 |
136 |
137 |
138 |
146 |
139 |
145 | |
147 |
|
150 |
151 |
152 |
153 |
154 | |
155 |
156 |
157 |
158 |
166 |
159 |
165 | |
167 |
168 |
169 |
170 |
171 |
179 |
172 |
178 | |
180 |
181 |
182 |
183 |
184 |
192 |
185 |
191 | |
193 |
|
196 |
197 |
198 |
199 |
200 | |
201 |
202 |
203 |
204 |
212 |
205 |
211 | |
213 |
214 |
215 |
216 |
217 |
225 |
218 |
224 | |
226 |
227 |
228 |
229 |
230 |
238 |
231 |
237 | |
239 |