图片加字,用我最爽

添加后的文字可用鼠标拖拽——没这个就成了最不爽了。
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; color: red; font: 16pt sans; </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, offsetY function add () { let e = d.createElement('p') e.style.cssText = ta_css.value e.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.left offsetY = ev.clientY - rect.top ev.preventDefault() }) e.addEventListener('dblclick', ev =>{ ev.target.style.display = 'none' }) d.body.appendChild(e) } d.addEventListener('mousemove', e =>{ if (!draggingEle) return let scrollX = window.pageXOffset || d.documentElement.scrollLeft, scrollY = window.pageYOffset || d.documentElement.scrollTop let x = e.clientX - offsetX + scrollX, y = e.clientY - offsetY + scrollY draggingEle.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>
Python PIL缩放旋转:
from PIL import Image as Img from os import path import sys if len(sys.argv) < 3: exit() name = sys.argv[1] try: img = Img.open(name) except FileNotFoundError as e: print(e); exit() for a in sys.argv[2:]: i = a.find('%') if i != -1: w,h = img.size scale = float(sys.argv[2][:i]) / 100 size = (int(w * scale), int(h * scale)) img = img.resize(size, Img.LANCZOS) w,h = img.size else: img = img.rotate(int(a)) root,ext = path.splitext(name) img.save(root + '-'.join(sys.argv[2:]) + ext, compress_level=9)
〔qcrop裁减〕

浙公网安备 33010602011771号