让DeepSeek生成一个HTML5图片拼接工具,给的提示词如下
提示词(prompt)
帮我生成一个可以将两张图片拼接到一起的程序 支持横向拼接和竖向拼接,可以用html5实现功能吗?
DeepSeek大概20秒左右就做好了,而且像这么简单的功能的话也没必要用python或者其他编程语言去生成,不然的话还得去配置运行环境,用HTML5直接用浏览器打开就可以了,最重要的是可以直接在DeepSeek生成的代码右边就可以直接点击运行了,连自己建一个html的文件都省去了,试了一下最终效果,还不错,任务算是完成了。
在这里插入图片描述
在这里插入图片描述
源码如下,可以新建一个html文件,源码直接复制进去双击打开即可。

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>HTML5 图片拼接工具</title><style>body {font-family: Arial, sans-serif;max-width: 900px;margin: 0 auto;padding: 20px;line-height: 1.6;}h1 {color: #333;text-align: center;}.container {display: flex;flex-direction: column;gap: 20px;}.controls {display: flex;flex-wrap: wrap;gap: 15px;padding: 15px;background: #f5f5f5;border-radius: 5px;}.control-group {display: flex;flex-direction: column;gap: 5px;}button {padding: 8px 15px;background: #4CAF50;color: white;border: none;border-radius: 4px;cursor: pointer;font-size: 16px;}button:hover {background: #45a049;}select, input {padding: 8px;border-radius: 4px;border: 1px solid #ddd;}.preview {display: flex;flex-direction: column;align-items: center;gap: 15px;}#imageContainer {display: flex;flex-wrap: wrap;gap: 10px;margin-bottom: 15px;}.thumbnail {max-width: 150px;max-height: 150px;border: 1px solid #ddd;position: relative;}.thumbnail img {max-width: 100%;max-height: 100%;}.remove-btn {position: absolute;top: 0;right: 0;background: red;color: white;border: none;border-radius: 50%;width: 20px;height: 20px;font-size: 12px;cursor: pointer;}#resultCanvas {max-width: 100%;border: 1px solid #ddd;margin-top: 15px;display: none;}.download-btn {background: #2196F3;display: none;}.download-btn:hover {background: #0b7dda;}</style>
</head>
<body><h1>HTML5 图片拼接工具</h1><div class="container"><div class="controls"><div class="control-group"><label for="imageInput">选择图片:</label><input type="file" id="imageInput" accept="image/*" multiple></div><div class="control-group"><label for="modeSelect">拼接方式:</label><select id="modeSelect"><option value="horizontal">横向拼接</option><option value="vertical">竖向拼接</option></select></div><div class="control-group"><label for="spacingInput">图片间距:</label><input type="number" id="spacingInput" value="0" min="0" max="100"></div><div class="control-group"><label for="bgColor">背景颜色:</label><input type="color" id="bgColor" value="#ffffff"></div><button id="processBtn">拼接图片</button></div><div class="preview"><div id="imageContainer"></div><canvas id="resultCanvas"></canvas><button id="downloadBtn" class="download-btn">下载拼接结果</button></div></div><script>document.addEventListener('DOMContentLoaded', function() {const imageInput = document.getElementById('imageInput');const modeSelect = document.getElementById('modeSelect');const spacingInput = document.getElementById('spacingInput');const bgColor = document.getElementById('bgColor');const processBtn = document.getElementById('processBtn');const imageContainer = document.getElementById('imageContainer');const resultCanvas = document.getElementById('resultCanvas');const downloadBtn = document.getElementById('downloadBtn');let images = [];// 处理图片选择imageInput.addEventListener('change', function(e) {const files = e.target.files;if (files.length === 0) return;images = [];imageContainer.innerHTML = '';for (let i = 0; i < files.length; i++) {const file = files[i];if (!file.type.match('image.*')) continue;const reader = new FileReader();reader.onload = function(e) {const img = new Image();img.onload = function() {images.push(img);addThumbnail(img, images.length - 1);};img.src = e.target.result;};reader.readAsDataURL(file);}});// 添加缩略图function addThumbnail(img, index) {const thumbnailDiv = document.createElement('div');thumbnailDiv.className = 'thumbnail';const thumbnailImg = document.createElement('img');thumbnailImg.src = img.src;const removeBtn = document.createElement('button');removeBtn.className = 'remove-btn';removeBtn.innerHTML = '×';removeBtn.onclick = function() {images.splice(index, 1);imageContainer.removeChild(thumbnailDiv);// 重新渲染所有缩略图以更新索引imageContainer.innerHTML = '';images.forEach((img, i) => addThumbnail(img, i));};thumbnailDiv.appendChild(thumbnailImg);thumbnailDiv.appendChild(removeBtn);imageContainer.appendChild(thumbnailDiv);}// 处理拼接按钮点击processBtn.addEventListener('click', function() {if (images.length < 2) {alert('请至少选择两张图片');return;}const mode = modeSelect.value;const spacing = parseInt(spacingInput.value);const backgroundColor = bgColor.value;concatenateImages(images, mode, spacing, backgroundColor);});// 拼接图片function concatenateImages(images, mode, spacing, bgColor) {let totalWidth = 0;let totalHeight = 0;if (mode === 'horizontal') {// 横向拼接:总宽度是所有图片宽度之和 + 间距,高度取最大高度totalWidth = images.reduce((sum, img) => sum + img.width, 0) + (images.length - 1) * spacing;totalHeight = Math.max(...images.map(img => img.height));} else {// 竖向拼接:总高度是所有图片高度之和 + 间距,宽度取最大宽度totalHeight = images.reduce((sum, img) => sum + img.height, 0) + (images.length - 1) * spacing;totalWidth = Math.max(...images.map(img => img.width));}// 设置canvas尺寸resultCanvas.width = totalWidth;resultCanvas.height = totalHeight;const ctx = resultCanvas.getContext('2d');// 填充背景色ctx.fillStyle = bgColor;ctx.fillRect(0, 0, totalWidth, totalHeight);let x = 0;let y = 0;for (const img of images) {ctx.drawImage(img, x, y);if (mode === 'horizontal') {x += img.width + spacing;} else {y += img.height + spacing;}}// 显示结果和下载按钮resultCanvas.style.display = 'block';downloadBtn.style.display = 'inline-block';}// 处理下载按钮点击downloadBtn.addEventListener('click', function() {const link = document.createElement('a');link.download = '拼接结果.png';link.href = resultCanvas.toDataURL('image/png');link.click();});});</script>
</body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/85969.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/85969.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/85969.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java面试复习指南:Java基础、面向对象编程与并发编程

Java面试复习指南&#xff1a;Java基础、面向对象编程与并发编程 1. Java基础 概念解析: Java是一种面向对象的编程语言&#xff0c;具有跨平台的特性。 核心原理: JVM负责Java程序的跨平台运行&#xff0c;通过字节码来实现。 高频面试问题: Java如何实现跨平台&#xff…

LeeCode2566替换一个数字后的最大差值

项目场景&#xff1a; 给你一个整数 num 。你知道 Danny Mittal 会偷偷将 0 到 9 中的一个数字 替换 成另一个数字。 请你返回将 num 中 恰好一个 数字进行替换后&#xff0c;得到的最大值和最小值的差为多少。 注意&#xff1a; 当 Danny 将一个数字 d1 替换成另一个数字 …

李宏毅2025《机器学习》第三讲-AI的脑科学

在之前的课程中探讨了如何利用大模型构建AI Agent,本科将暂时放下应用层面的探索,拿起“手术刀”和“显微镜”,深入剖析LLM的“大脑”,带您踏上一场“AI脑神经科学”的旅程。课程不讨论模型的训练过程,而是假设我们拥有一个已经训练好的、功能完备的LLM。我们的目标是:理…

CVPR 2025 | 微米级光影CT精度!复旦腾讯优图开源Real-IAD D³数据集

【导读】 本文介绍了复旦联合腾讯优图发布高精度多模态数据集Real-IAD D&#xff0c;并基于此数据集提出了一种创新的多模态融合检测方法&#xff0c;数据集已被CVPR 2025收录&#xff0c;并开源。>>更多资讯可加入CV技术群获取了解哦~ 目录 一、Real-IAD D的创新之处…

解决mysql左连接加where就不会保留左表中的全部数据的问题

在SQL中使用MySQL的LEFT JOIN操作时,如果加入了WHERE条件,确实会影响结果集的完整性,特别是如果你在WHERE条件中使用了JOIN的另一张表中的字段作为过滤条件。这是因为当你在WHERE子句中加入了对JOIN另一张表的过滤条件时,实际上你是在执行一个INNER JOIN(内连接)而非LEFT…

算法与数据结构:动态规划DP

文章目录 动态规划算法全面解析一、核心思想与基本概念二、动态规划与其他算法的区别三、动态规划的解题步骤四、经典案例解析1. **斐波那契数列&#xff08;Fibonacci&#xff09;**2. **0-1背包问题&#xff08;0-1 Knapsack&#xff09;**3. **最长公共子序列&#xff08;LC…

Coilcraft电感上的横线是什么意思?电感有方向么?

通常我们会认为电容、电感、电阻这几类无源器件没有方向性&#xff0c;在布局和贴片时可以任意方向放置&#xff0c;也不会在PCB上增加丝印标识说明其方向。与此相互印证的是&#xff0c;电容表面无丝印&#xff0c;无法识别方向&#xff1b;电阻表面一般只有包含阻值大小的数字…

通过Docker挂载nginx并修改页面

1&#xff1a;通过docker创建nginx&#xff1a; 首先关闭原来的Docker&#xff08;防止端口号冲突&#xff09; sudo nginx -s stop 直接启动 Nginx 进程 sudo nginx 启动nginx&#xff1a; docker run -di --namemynginx -p 80:80 nginx cd /etc/nginx docker run -d …

力扣1124. 表现良好的最长时间段

这一题我看到数据范围是10^4&#xff0c;暗自窃喜能用双重循环&#xff0c;看题目是典型的前缀和哈希。不过需要一个转换将大于8小时的转化为1&#xff0c;其他都为-1&#xff0c;方便计算&#xff0c;之前的题目中也有这种方法。 那这样就简单了 class Solution { public:int…

EDA2算法速通(编者崩溃版)

这个内容是用来回忆一下EDA2涉及的算法和解题的主要步骤&#xff1a; 有疑问或发现错误可以私信来讨论 高级综合概述 柏拉图优化&#xff1a;这个是来判断是否有哪些节点能完全被其他节点优化掉。比如&#xff08;1,2&#xff09;这个节点就可以完全优化&#xff08;3,4&…

雷池waf配置第三方登录-钉钉配置详细教程

雷池waf配置第三方登录-钉钉配置详细教程 前往钉钉开放平台https://open.dingtalk.com/ 选择一个登录方式登录钉钉开放平台 选择一个自己所管理的组织 登录成功后点击我的后台 选择应用开发 在钉钉应用下点击创建应用 填写应用名称和应用描述后点击保存 点击网页…

神经网络中的均方误差(Mean Squared Error)详解

引言 在机器学习和神经网络领域&#xff0c;损失函数&#xff08;Loss Function&#xff09;是衡量模型预测值与真实值之间差异的关键指标。均方误差&#xff08;Mean Squared Error, MSE&#xff09;作为一种经典的损失函数&#xff0c;因其简单性、可解释性和数学上的优良性…

day036-lsyncd实时同步服务与网站存储架构

文章目录 1. 实时同步工具2. lsyncd 实时同步服务2.1 环境准备2.2 rsync准备2.2.1 服务端检查2.2.2 客户端检查2.2.3 备份测试 2.3 配置lsyncd2.3.1 安装软件2.3.2 编写配置文件 2.4 测试 3. 案例-网站存储架构3.1 rsync服务配置3.1.1 服务端配置3.1.2 客户端配置 3.2 lsyncd服…

React Native WebView键盘难题:如何让输入框不被键盘遮挡?

写在前面 “明明点击了输入框&#xff0c;键盘却把内容顶得不见踪影&#xff01;” —— 这可能是React Native开发者使用WebView时最头疼的问题之一。 想象一下&#xff1a;你的App内嵌了一个网页表单&#xff0c;用户兴奋地准备填写信息&#xff0c;结果键盘弹出后&#xf…

Web攻防-XSS跨站浏览器UXSS突变MXSSVueReactElectron框架JQuery库写法和版本

知识点&#xff1a; 1、Web攻防-XSS跨站-浏览器&转换-UXSS&MXSS 2、Web攻防-XSS跨站-框架和库-VUE&React&Electron&JQuery 分类&#xff1a; 1、框架或三方库的XSS(Vue、React、Electron、JQuery) 2、浏览器或插件的XSS(UXSS) 3、客户端预览内核的XSS(MXS…

PyTorch 中torch.clamp函数使用详解和实战示例

torch.clamp 是 PyTorch 中的一个非常有用的函数&#xff0c;它可以将张量的每个元素限制在一个指定的范围内&#xff0c;超出范围的元素将被裁剪为边界值。 函数签名&#xff1a; torch.clamp(input, minNone, maxNone, outNone)参数说明&#xff1a; input&#xff1a;输入…

详解Redis数据库和缓存不一致的情况及解决方案

数据库与缓存不一致是分布式系统中常见问题&#xff0c;本质是数据在缓存层和存储层出现版本差异。 一、并发写操作导致不一致&#xff08;最常见&#xff09; 场景描述 线程A更新数据库 → 线程B更新数据库 → 线程B更新缓存 → 线程A更新缓存 结果&#xff1a;缓存中存储的…

湖北理元理律师事务所:企业债务危机的“急诊科”式应对方案

当企业陷入债务危机时&#xff0c;传统“头痛医头”的应对往往加速死亡。本方案基于企业债务重组实务&#xff0c;提炼出 “止血-清创-修复”三阶急救体系&#xff0c;助力企业守住生存底线。 第一阶段&#xff1a;精准止血&#xff08;0-30天关键期&#xff09; 目标&#x…

华为云Flexus+DeepSeek征文|基于Dify构建智能票据信息识别助手

华为云FlexusDeepSeek征文&#xff5c;基于Dify构建智能票据信息识别助手 一、构建智能票据信息识别助手前言二、构建智能票据信息识别助手环境2.1 基于FlexusX实例的Dify平台2.2 基于MaaS的模型API商用服务 三、构建智能票据信息识别助手实战3.1 配置Dify环境3.2 配置Dify工具…

Python实例题:基于联邦学习的隐私保护 AI 系统(分布式学习、隐私计算)

目录 Python实例题 题目 问题描述 解题思路 关键代码框架 难点分析 扩展方向 Python实例题 题目 基于联邦学习的隐私保护 AI 系统&#xff08;分布式学习、隐私计算&#xff09; 问题描述 开发一个基于联邦学习的隐私保护 AI 系统&#xff0c;包含以下功能&#xff…