图片融合 下载

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>图片融合</title>
    <style>
        .button-container {
            margin-top: 10px;
        }

        .button {
            margin-right: 10px;
            cursor: pointer;
        }
    </style>
</head>

<body>
    <h1>上传图片并与默认图片融合</h1>
    <input type="file" id="imageInput" accept="image/*">
    <div class="button-container">
        <button id="moveUpButton" class="button">上移</button>
        <button id="moveDownButton" class="button">下移</button>
        <button id="moveLeftButton" class="button">左移</button>
        <button id="moveRightButton" class="button">右移</button>
    </div>
    <canvas id="canvas" style="border: 1px solid black; width: 400px; height: 400px;"></canvas>
    <a id="downloadLink" style="display: none;" download="merged_image.png">下载融合后的图片</a>
    <!-- <img src="" id="imgsrc" alt=""> -->
    <script>

       
        const imageInput = document.getElementById('imageInput');
        const canvas = document.getElementById('canvas');
        const ctx = canvas.getContext('2d');
        const downloadLink = document.getElementById('downloadLink');
        const moveUpButton = document.getElementById('moveUpButton');
        const moveDownButton = document.getElementById('moveDownButton');
        const moveLeftButton = document.getElementById('moveLeftButton');
        const moveRightButton = document.getElementById('moveRightButton');

        const defaultImage = new Image();
        defaultImage.src = 'default_image.png'; // 修改为相对路径
        defaultImage.onload = () => {
            canvas.width = defaultImage.width;
            canvas.height = defaultImage.height;
            drawUploaded();
        };

        let uploadedImage = null;
        let uploadedX = 0;
        let uploadedY = 0;

        imageInput.addEventListener('change', function () {
            const file = this.files[0];
            const reader = new FileReader();

            reader.onload = function (e) {
                uploadedImage = new Image();
                uploadedImage.src = e.target.result;

                uploadedImage.onload = function () {
                    canvas.width = defaultImage.width;
                    canvas.height = defaultImage.height;
                    drawUploaded();
                };
            };

            reader.readAsDataURL(file);
        });
        let = moveDistannce = 50
        moveUpButton.addEventListener('click', () => {
            uploadedY -= moveDistannce; // 调整上传图片的Y坐标
            drawUploaded();
        });

        moveDownButton.addEventListener('click', () => {
            uploadedY += moveDistannce; // 调整上传图片的Y坐标
            drawUploaded();
        });

        moveLeftButton.addEventListener('click', () => {
            uploadedX -= moveDistannce; // 调整上传图片的X坐标
            drawUploaded();
        });

        moveRightButton.addEventListener('click', () => {
            uploadedX += moveDistannce; // 调整上传图片的X坐标
            drawUploaded();
        });

        function drawUploaded() {
            ctx.clearRect(0, 0, canvas.width, canvas.height);
            if (uploadedImage) {
                ctx.drawImage(uploadedImage, uploadedX, uploadedY, canvas.width, canvas.height);
                ctx.drawImage(defaultImage, 0, 0, canvas.width, canvas.height);

                const mergedImageDataURL = canvas.toDataURL('image/png');
                console.log(mergedImageDataURL, 'mergedImageDataURL');
                downloadLink.href = mergedImageDataURL;
                downloadLink.style.display = 'block';

                // canvas.toBlob((blob) => {
                //     const reader = new FileReader();

                //     reader.onload = () => {
                //         // 读取Blob数据并将其转换为Base64编码
                //         const base64Data = reader.result;
                //         downloadLink.href = base64Data;
                //         downloadLink.style.display = 'block';
                //         console.log(base64Data);
                //     };

                //     reader.readAsDataURL(blob);
                // }, 'image/png');
            }

        }
    </script>
</body>

</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值