chrome小插件:长图片等分切割

打印 上一主题 下一主题

主题 982|帖子 982|积分 2956

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
 前置条件:

安装有chrome谷歌欣赏器的电脑
使用步骤:

1.打开chrome扩展插件

2.点击管理扩展程序

3.加载已解压的扩展程序

4.选择对应文件夹

5.成功后会出现一个扩展小程序

 6.点击对应小程序

7.选择图片进行切割,切割完成后会主动生存

代码:

1.manifest.json
  1. {
  2.   "manifest_version": 3,
  3.   "name": "图片裁切工具",
  4.   "version": "1.0",
  5.   "description": "将长图平均裁切成多份",
  6.   "icons": {
  7.     "128": "images/icon128.png"
  8.   },
  9.   "action": {
  10.     "default_popup": "popup.html",
  11.     "default_icon": {
  12.       "128": "images/icon128.png"
  13.     }
  14.   },
  15.   "permissions": [
  16.     "downloads"
  17.   ]
  18. }
复制代码
2.popup.js
  1. document.addEventListener('DOMContentLoaded', function() {
  2.   const imageInput = document.getElementById('imageInput');
  3.   const preview = document.getElementById('preview');
  4.   const partsInput = document.getElementById('parts');
  5.   const splitButton = document.getElementById('splitButton');
  6.   
  7.   let selectedImage = null;
  8.   imageInput.addEventListener('change', function(e) {
  9.     const file = e.target.files[0];
  10.     if (file) {
  11.       const reader = new FileReader();
  12.       reader.onload = function(e) {
  13.         preview.src = e.target.result;
  14.         preview.style.display = 'block';
  15.         selectedImage = e.target.result;
  16.       };
  17.       reader.readAsDataURL(file);
  18.     }
  19.   });
  20.   splitButton.addEventListener('click', function() {
  21.     if (!selectedImage) {
  22.       alert('请先选择图片!');
  23.       return;
  24.     }
  25.     const parts = parseInt(partsInput.value);
  26.     if (parts < 2) {
  27.       alert('裁切份数必须大于等于2!');
  28.       return;
  29.     }
  30.     const img = new Image();
  31.     img.onload = function() {
  32.       const canvas = document.createElement('canvas');
  33.       const ctx = canvas.getContext('2d');
  34.       
  35.       const partHeight = Math.floor(img.height / parts);
  36.       canvas.width = img.width;
  37.       canvas.height = partHeight;
  38.       for (let i = 0; i < parts; i++) {
  39.         ctx.clearRect(0, 0, canvas.width, canvas.height);
  40.         ctx.drawImage(
  41.           img,
  42.           0, i * partHeight, // 源图片裁切起始位置
  43.           img.width, partHeight, // 源图片裁切尺寸
  44.           0, 0, // canvas绘制起始位置
  45.           canvas.width, canvas.height // canvas绘制尺寸
  46.         );
  47.         // 将canvas转换为blob并下载
  48.         canvas.toBlob(function(blob) {
  49.           const url = URL.createObjectURL(blob);
  50.           chrome.downloads.download({
  51.             url: url,
  52.             filename: `split_${i + 1}.png`,
  53.             saveAs: false
  54.           });
  55.         }, 'image/png');
  56.       }
  57.     };
  58.     img.src = selectedImage;
  59.   });
  60. });
复制代码
3.popup.html
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.   <meta charset="UTF-8">
  5.   <style>
  6.     body {
  7.       width: 300px;
  8.       padding: 10px;
  9.     }
  10.     .container {
  11.       display: flex;
  12.       flex-direction: column;
  13.       gap: 10px;
  14.     }
  15.     #preview {
  16.       max-width: 100%;
  17.       max-height: 200px;
  18.       display: none;
  19.     }
  20.   </style>
  21. </head>
  22. <body>
  23.   <div class="container">
  24.     <input type="file" id="imageInput" accept="image/*">
  25.     <img id="preview">
  26.     <div>
  27.       <label for="parts">裁切份数:</label>
  28.       <input type="number" id="parts" min="2" value="2">
  29.     </div>
  30.     <button id="splitButton">开始裁切</button>
  31.   </div>
  32.   <script src="popup.js"></script>
  33. </body>
  34. </html>
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

来自云龙湖轮廓分明的月亮

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表