当前位置: 首页 > news >正文

图片加字,用我最爽

image

添加后的文字可用鼠标拖拽——没这个就成了最不爽了。

HTML+JavaScript:

<html><head><meta charset="UTF-8">
<title>图片加字,用我最爽</title>
<style>
body {display: flex; /* 设置为弹性布局容器 */justify-content: center; /* 主轴(默认水平)居中 */align-items: center; /* 交叉轴(默认竖直)居中 */
}
* { font: 12pt sans-serif; }
img { pointer-events: none; user-select: none; }
button { width: 6em; padding: 8px; font-size: 13pt; }
#file { display: none; }
textarea { line-height: 150%; }
/* p和div都是独占一行的块元素。p的margin-top/bottom默认不为0 */
.draggable {position: absolute; margin: 0; padding: 0;user-select: none; cursor: move;
}
.draggable:active { cursor: none; }
</style></head><body>
<!--在未设置CSS定位和z-index属性的默认情况下,后出现在源码中的元素覆盖先出现的元素-->
<img>
<div style="position:absolute; left:16px; top:16px"><p><input type="file" id="file" accept="image/*"><button onclick="file.click()">打开图片</button></p><p><textarea id="ta_css" spellcheck="false" rows=8 cols=25>left:600px; top:100px;&#13;&#10;color: red;&#13;&#10;font: 16pt sans;&#13;&#10;</textarea></p><p><textarea id="ta_str" spellcheck="false" rows=3 cols=25 placeholder="图片加字,用我最爽"></textarea></p><p><button onclick='add()'>添加文字</button></p><p style="font-size:90%; color:#666">双击鼠标左键隐藏文字</p>
</div>
<script>
let d = document, draggingEle, offsetX, offsetYfunction add () {let e = d.createElement('p')e.style.cssText = ta_css.valuee.textContent = ta_str.value ? ta_str.value : '去马如飞酒力微醒时已暮赏花归'e.classList.add('draggable')e.addEventListener('mousedown', ev =>{let rect = (draggingEle = ev.target).getBoundingClientRect()offsetX = ev.clientX - rect.leftoffsetY = ev.clientY - rect.topev.preventDefault()})e.addEventListener('dblclick', ev =>{ ev.target.style.display = 'none' })d.body.appendChild(e)
}d.addEventListener('mousemove', e =>{if (!draggingEle) returnlet scrollX = window.pageXOffset || d.documentElement.scrollLeft,scrollY = window.pageYOffset || d.documentElement.scrollToplet x = e.clientX - offsetX + scrollX,y = e.clientY - offsetY + scrollYdraggingEle.style.left = x + 'px'draggingEle.style.top = y + 'px'
})d.addEventListener('mouseup', () =>{ draggingEle = undefined })// 防止拖拽时选中文本
d.addEventListener('selectstart', e =>{ if (draggingEle) e.preventDefault() })file.addEventListener('change', f =>{let reader = new FileReader()reader.onload = e =>{ d.querySelectorAll('img')[0].src = e.target.result }if (f.target.files.length) reader.readAsDataURL(f.target.files[0])
})
</script></body></html>
View Code

Python resize随后上传

http://www.jsqmd.com/news/35777/

相关文章:

  • new day
  • How to do PhD work
  • 关于计算机语言的学习
  • 计算机视觉(opencv)——基于MediaPipe与机器学习的手势识别高效的系统
  • 2025年合肥品牌设计团队专业排行
  • 2025年国内品牌设计公司top5推荐:专业团队口碑榜单
  • 英语_中考作文_An Act of Kindness_待读
  • [题解]【MX-S10】梦熊 NOIP 2025 模拟赛 2 FeOI Round 4 T1~T2
  • 小聊一下 带圈的数字,以及罕用字的显示、字体文件的分割
  • CSP挂分记
  • 实用指南:Agent 的感知-决策-行动循环实现
  • Ubuntu 22.04 的镜像源列表
  • 关于梅特勒-托利多 称重传感器检查
  • Window 11 安装wsl
  • 深入解析:达梦数据库TDE透明加密解决方案:构建高安全数据存储体系
  • 现代Web API应用与优化建议
  • Linux 云计算核心技术:原理、组件与 K8s 实战部署 - 详解
  • 局域网---传输文件资料信息
  • ICPC2023南京个人题解
  • 从C++到wasm,并在JavaScript中调用
  • 图书馆管理系统初步设计
  • Delphi 修改单元名称后,编译报错找不到修改前的单元
  • 详细介绍:计算某字符出现次数
  • 3dgs Scene详解 - 详解
  • 教学视频(1)
  • 实用指南:C++STL---静态数组array
  • 英语_阅读_Why we dislike change_待读
  • 游戏编程模式-享元模式(Flyweight) - 指南
  • 深入解析:css、dom 性能优化方向
  • 002 vue3-admin项目的目录及文件说明之package.json文件