Skip to content
This repository was archived by the owner on Apr 28, 2023. It is now read-only.

Commit 35c227e

Browse files
committed
add 从剪贴板获取图片直接上传
1 parent dfa2c39 commit 35c227e

3 files changed

Lines changed: 81 additions & 28 deletions

File tree

image.html

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,42 @@
11
<!DOCTYPE html>
22
<html>
33
<head>
4-
<meta charset="utf-8">
5-
<title>上传图片</title>
6-
<link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
7-
<style type="text/css">
8-
#wrap{width: 300px;height:auto;padding: 15px;}
9-
#showImage{position: absolute; top: 0;left: 0;}
10-
#showImage img{width: 100px;height: auto;}
11-
#imageList{padding-top: 15px;display: none;}
12-
#imageList li{width: 50px;height: 50px;overflow: hidden;}
13-
#imageList li a{display: block;}
14-
#imageList li img{width: 50px;height: auto;}
15-
</style>
16-
<script type="text/javascript" src="./js/cos-js-sdk-v5.min.js"></script>
17-
<script type="text/javascript" src="./js/image.js"></script>
4+
<meta charset="utf-8">
5+
<title>上传图片</title>
6+
<link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
7+
<style type="text/css">
8+
a {cursor: pointer;}
9+
#wrap{width: 400px;height:auto;padding: 15px;}
10+
#showImage{position: absolute; top: 0;right: 0;display: none;}
11+
#showImage img{max-height: 145px;width: auto;}
12+
#imageList{padding-top: 15px;display: none;max-height: 300px;overflow: auto;}
13+
#imageList li{width: 50px;height: 50px;overflow: hidden;}
14+
#imageList li a{display: block;}
15+
#imageList li img{width: 50px;height: auto;}
16+
#clipboardInput{margin:20px 0;}
17+
</style>
18+
<script type="text/javascript" src="js/cos-js-sdk-v5.min.js"></script>
19+
<script type="text/javascript" src="js/image.js"></script>
1820
</head>
1921
<body>
2022
<textarea style="display: block;position: absolute;top: -300px;" id="hidden"></textarea>
2123
<div id="wrap">
2224
<div id="pic">
2325
<button type="button" id="btn" class="btn btn-success">上传图片</button>
24-
<a href="javascript:;" id="clean" class="btn btn-link">清除历史</a>
25-
<span class="text-danger" id="tips" style="display: none;position: absolute;top: 20px;right: 30px;">复制成功</span>
26+
<a href="#" id="clean" class="btn btn-link">清除历史</a>
27+
<span class="text-danger" id="tips" style="display: none;position: absolute;top: 5px;left: 115px;">复制成功</span>
2628
<p class="help-block">点击图片复制内容</p>
2729
<input type="file" name="" id="file" style="display: none;">
30+
<input type="text" name="clipboardInput" id="clipboardInput" class="form-control" placeholder="粘帖图片">
2831
</div>
29-
3032
<ul id="imageList" class="list-inline">
3133

3234
</ul>
3335
</div>
3436

37+
<div id="showImage">
38+
<img src="">
39+
</div>
40+
3541
</body>
3642
</html>

js/image.js

Lines changed: 47 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,15 @@ var image = {
88
this.refreshImage();
99
ID('imageList').style.display = 'block';
1010
},
11+
// 初始化 绑定事件
1112
initEvent: function () {
1213
var that = this,
1314
file = ID('file');
1415

1516
ID('btn').addEventListener('click', function () {
1617
that.start();
1718
});
18-
19+
// 上传图片
1920
file.addEventListener('change', function (e) {
2021
var file = e.target.files[0],
2122
name = cos.getRandomName(this.value);
@@ -31,35 +32,66 @@ var image = {
3132
}
3233
});
3334

35+
// 鼠标移上 显示大图
36+
ID('imageList').addEventListener('mouseover', function (e) {
37+
var target = e.target || e.srcElement;
38+
if (target.tagName === 'IMG') {
39+
that.showBigImage(target.getAttribute('src'))
40+
}
41+
});
42+
43+
ID('imageList').addEventListener('mouseout', function (e) {
44+
var target = e.target || e.srcElement;
45+
if (target.tagName === 'IMG') {
46+
ID('showImage').style.display = 'none';
47+
}
48+
});
49+
50+
// 粘帖图片
51+
ID('clipboardInput').addEventListener('paste', function(event) {
52+
var items = (event.clipboardData && event.clipboardData.items) || [];
53+
var file = null;
54+
55+
if (items && items.length) {
56+
for (var i = 0; i < items.length; i++) {
57+
if (items[i].type.indexOf('image') !== -1) {
58+
file = items[i].getAsFile();
59+
cos.send(cos.getRandomName(file.name), file);
60+
break;
61+
}
62+
}
63+
}
64+
});
65+
3466
// 清除历史
3567
ID('clean').addEventListener('click', function () {
3668
chrome.storage.sync.set({image: []}, function() {
3769
that.refreshImage();
3870
});
3971
})
4072
},
73+
// 点击上传按钮
4174
start: function () {
42-
var that = this,
43-
file = ID('file');
44-
file.click();
75+
ID('file').click();
4576
},
46-
// 显示图片
77+
// 加载本地历史 显示图片
4778
refreshImage: function () {
4879
chrome.storage.sync.get({image: []}, function(items) {
4980
var html = [];
5081
var images = items.image.reverse();
5182
for (var i=0;i<items.image.length;i++) {
52-
html.push('<li><a href="javascript:;"><img src="'+items.image[i]+'"></a></li>');
83+
html.push('<li><a href="#"><img src="'+items.image[i]+'"></a></li>');
5384
}
5485
ID('imageList').innerHTML = html.join('');
5586
});
5687
},
88+
// 保存到本地记录
5789
insert: function (src) {
5890
var that = this;
5991
chrome.storage.sync.get({image: []}, function(items) {
6092
var data = items.image;
6193
data.push(src);
62-
if (data.length > 10) {
94+
if (data.length > 100) {
6395
data.shift();
6496
}
6597
chrome.storage.sync.set({image: data}, function() {
@@ -69,6 +101,12 @@ var image = {
69101
});
70102
this.copy(src);
71103
},
104+
// 显示大图
105+
showBigImage (src) {
106+
var image = document.querySelector('#showImage img');
107+
image.setAttribute('src', src);
108+
ID('showImage').style.display = 'block';
109+
},
72110
// 复制文字
73111
copy: function (txt) {
74112
var op = ID('hidden');
@@ -93,6 +131,7 @@ var image = {
93131
};
94132

95133
var cos = {
134+
// 上传图片到腾讯云
96135
send: function (name, file) {
97136
var config = {
98137
SecretId: '',
@@ -125,7 +164,7 @@ var cos = {
125164
},
126165
// 获取随机文件名称
127166
getRandomName: function (name) {
128-
var ext = name.split('.').pop(),
167+
var ext = name ? name.split('.').pop() : '',
129168
d = new Date(),
130169
path = "/";
131170
path += d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate();

readme.md

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,18 @@
1+
## `markdown`图片助手
12

2-
- 图片上传完成后自动加入剪贴板,保留10条历史记录
3+
![image](logo.png)
4+
5+
- 截图后直接粘帖到文本框
6+
7+
![image](https://note-1251721932.cos.ap-shanghai.myqcloud.com/2019-5-28/go0hk9pka7u.png)
8+
9+
- 图片上传完成后自动加入剪贴板
310
- 点击图片复制 `markdown` 格式图片
411
- 需要配置[腾讯云存储参数](https://console.cloud.tencent.com/cos)
512

6-
![image](logo.png)
13+
| 来源 Origin | 操作 Methods | Allow-Headers | Expose-Headers | 超时 Max-Age |
14+
|-- | -- | -- | -- | -- |
15+
| * | PUT,GET,POST | * | ETag | 30 |
716

8-
![image](https://note-1251721932.cos.ap-shanghai.myqcloud.com/2018-7-12/fm0vr0bnk6h.png)
917

1018
![image](https://note-1251721932.cos.ap-shanghai.myqcloud.com/2018-7-12/4fgtltq2xeg.png)

0 commit comments

Comments
 (0)