背景:非程序员,只懂VBA,其他语言一概没入门。
这两天在尝试MJ在抖音上做图文的玩法,遇到一个问题,如何将MJ生成的一张4宫格图片切分成4张单独的图片,找了一圈,要是用图片处理软件,那太麻烦了。忽然想到chatgpt可以写程序,于是我向chatgpt提出了以下要求:
我需要你扮演一位资深程序员,帮我写一个web应用,下面我将提出具体要求
1.这个应用是基于浏览器的;
2.这个应用的功能是将用户上传的图片平均切分为4张图片;
3.当图片上传完成后,自动开始切分图片;
4.当图片完成切分后,自动下载4张图片,分别命名为原图片名称后面加“-1"~"-4";
请给出完整的代码,并告诉我如何将这个web应用部署在服务器上。
万万没想到!chatgpt不仅给我写了代码,还告诉了我怎么部署!(代码见最后)
以上代码会在用户选择文件后自动开始切分图片并下载,没有额外的下载按钮。
要将此Web应用程序部署在服务器上,您需要将此代码保存为一个HTML文件,并将其上传到Web服务器或云托管服务中,以便用户可以通过Web浏览器访问该应用程序。如果您使用云托管服务,例如Amazon S3或Google Cloud Storage,您需要设置正确的存储桶权限以便用户可以下载生成的图片。
后来一想我有服务器不也麻烦吗,有没有更简单的测试办法?再一想html文件不是可以双击在浏览器里打开嘛。双击保存在桌面的html文件,嘿,打开了!
点击”选择文件“按钮,然后文件自动开始下载!完美实现所要的功能!AI太牛啦!
下载到电脑的图片(电脑预览不知怎么地不好使了,的确有4个文件)
Chatgpt给我生成的代码:
<!DOCTYPE html>
<html>
<head>
<title>图片切分应用程序</title>
<script type="text/javascript">
functionprocessImage() {
// 获取上传的文件
const file = document.getElementById("fileInput").files[0];
// 创建一个新的Image对象
const image = newImage();
// 设置Image对象的src属性
image.src = URL.createObjectURL(file);
// 当Image对象加载完成时,将其绘制到canvas元素上
image.onload = function() {
// 创建一个canvas元素
const canvas = document.createElement("canvas");
// 设置canvas元素的宽度和高度
canvas.width = image.width;
canvas.height = image.height;
// 获取canvas元素的上下文对象
const context = canvas.getContext("2d");
// 将图像绘制到canvas元素上
context.drawImage(image, 0, 0);
// 将图像分成四个部分
const width = canvas.width / 2;
const height = canvas.height / 2;
// 第一个部分
const imageData1 = context.getImageData(0, 0, width, height);
const canvas1 = document.createElement("canvas");
canvas1.width = width;
canvas1.height = height;
canvas1.getContext("2d").putImageData(imageData1, 0, 0);
// 第二个部分
const imageData2 = context.getImageData(width, 0, width, height);
const canvas2 = document.createElement("canvas");
canvas2.width = width;
canvas2.height = height;
canvas2.getContext("2d").putImageData(imageData2, 0, 0);
// 第三个部分
const imageData3 = context.getImageData(0, height, width, height);
const canvas3 = document.createElement("canvas");
canvas3.width = width;
canvas3.height = height;
canvas3.getContext("2d").putImageData(imageData3, 0, 0);
// 第四个部分
const imageData4 = context.getImageData(width, height, width, height);
const canvas4 = document.createElement("canvas");
canvas4.width = width;
canvas4.height = height;
canvas4.getContext("2d").putImageData(imageData4, 0, 0);
// 创建下载链接
const link1 = document.createElement("a");
const link2 = document.createElement("a");
const link3 = document.createElement("a");
const link4 = document.createElement("a");
link1.download = file.name.replace(/\.[^/.]+$/, "") + "-1.png";
link2.download = file.name.replace(/\.[^/.]+$/, "") + "-2.png";
link3.download = file.name.replace(/\.[^/.]+$/, "") + "-3.png";
link4.download = file.name.replace(/\.[^/.]+$/, "") + "-4.png";
link1.href = canvas1.toDataURL("image/png");
link2.href = canvas2.toDataURL("image/png");
link3.href = canvas3.toDataURL("image/png");
link4.href = canvas4.toDataURL("image/png");
// 添加下载链接到页面上
document.body.appendChild(link1);
document.body.appendChild(link2);
document.body.appendChild(link3);
document.body.appendChild(link4);
// 触发下载链接点击事件
link1.click();
link2.click();
link3.click();
link4.click();
// 删除下载链接
document.body.removeChild(link1);
document.body.removeChild(link2);
document.body.removeChild(link3);
document.body.removeChild(link4);
};
}
</script>
</head>
<body>
<input type="file" id="fileInput" οnchange="processImage()">
</body>
</html>