本帖最后由 海东青1013 于 2026-5-9 17:02 编辑
创作初心:孩子上小学,老师发送A3卷子图片需要转换为A4图片,孩子不会,遂创作这个三件套。
下载链接在最下面,解压时点击右键→解压到桌面即可使用,感谢版主指导,谢谢^_^
目前最新版本V5.0,具体改动如下:
一、增加了离线\在线双模式,并在正上方有提示;
二、增加了操作教程;
三、引入离线模式后打印机预览和下载出现卡顿,优化了下代码;
四、如果大家有啥新的需要和需求,留言即可啊~
五、网盘暂时不开分享,大家直接下载即可,文件解压密码52pojie
第一段:主界面参数
[JavaScript] 纯文本查看 复制代码 <div class="row">
<button class="btn-rotate-left">向左↻转图</button>
<button class="btn-rotate-right">向右↺转图</button>
<button class="btn-rotate-180">180°旋转↕图</button>
<button class="btn-export">打包+下载A4卷子</button>
<button class="btn-print">批量打印A4卷子(打印机自己选择)</button>
</div>
<div id="preview">
<div style="line-height:1.8; font-size:14px; padding:10px;">
📁 1、点击上方【选择文件】按键;
<br>
🖼️ 2、选择图片文件,图片选择技巧:
<br>
✅ (1) 单一图片:直接点击鼠标左键选中图片 → 点击对话框【打开】;
第二段:增加在线离线的部分代码
[JavaScript] 纯文本查看 复制代码 document.addEventListener('DOMContentLoaded', () => {
const tip = document.getElementById('modeTip');
if (navigator.onLine) {
tip.textContent = "✅网络已链接-在线模式";
tip.style.color = "#28a745";
} else {
tip.textContent = "📶网络未链接-离线模式";
tip.style.color = "#fd7e18";
}
if (state.selectFolderName) {
document.getElementById('showPath').innerText = "已默认:" + state.selectFolderName;
document.getElementById('saveDefault').checked = true;
第三部分:图片分割的部分代码
[JavaScript] 纯文本查看 复制代码 function generateCutAndPreview() {
state.cutImages = [];
state.previewEl.innerHTML = '';
for (const { img, name } of state.rawImages) {
// 画布创建(目前曲面屏存在显示问题)
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
const w = img.width, h = img.height;
if (state.currentRotate === 90 || state.currentRotate === 270) {
canvas.width = h;
canvas.height = w;
} else {
canvas.width = w;
canvas.height = h;
}
ctx.translate(canvas.width / 2, canvas.height / 2);
ctx.rotate(state.currentRotate * Math.PI / 180);
ctx.drawImage(img, -w / 2, -h / 2);
// 分割左右
const half = Math.floor(canvas.width / 2);
const left = getImageFromCanvas(canvas, 0, 0, half, canvas.height);
const right = getImageFromCanvas(canvas, half, 0, canvas.width - half, canvas.height);
state.cutImages.push({ name, left, right });
// 预览DOM(试试这个方法,看看图片预览速度)
const div = document.createElement('div');
div.className = 'item';
div.innerHTML = `<p style="font-size:13px;margin-bottom:5px;">📄 ${name}</p>
<img src="${left}" style="max-width:48%;">
<img src="${right}" style="max-width:48%;">`;
state.previewEl.appendChild(div); |