开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

楼主: kike
收起左侧

[Web源码] 印章生成

[复制链接]
结帖率:100% (3/3)
发表于 2024-8-13 15:34:50 | 显示全部楼层   山东省青岛市
膜拜,感谢分享
回复 支持 反对

使用道具 举报

结帖率:100% (3/3)

签到天数: 9 天

发表于 2024-8-13 15:20:21 | 显示全部楼层   广东省深圳市
膜拜大佬
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)

签到天数: 16 天

 楼主| 发表于 2024-8-13 14:09:14 | 显示全部楼层   广东省深圳市
本帖最后由 kike 于 2024-8-13 14:11 编辑
cqcc 发表于 2024-8-13 11:15
这个副标题(回帖专用章),目前是横向,改成有幅度的可以吗?就像(精易论坛源码区) 这几个字一样,挨着圆 ...
下载 3.png
[HTML] 纯文本查看 复制代码
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>实时预览</title>
    <style>
        body {
            font-family: Arial, sans-serif;
        }
        .container {
            margin: 20px;
        }
        canvas {
            border: 1px solid #ccc;
        }
    </style>
</head>
<body>
    <div class="container">
        <label for="companyName">公司名称:</label>
        <input type="text" id="companyName" name="companyName" required>
        <br><br>
        <label for="securityCode">防伪码:</label>
        <input type="text" id="securityCode" name="securityCode" required>
        <br><br>
        <canvas id="canvas" width="300" height="300"></canvas>
    </div>

    <script>
        var canvas = document.getElementById("canvas");
        var context = canvas.getContext('2d');

        // 默认配置
        var config = {
            fontWeight05: 'bold',
            fontSize05: 10,
            sealScale09: 1,
            fontFamily05: '楷体',
            fontBorder05: 13,
            fontRotate05: 0.4,
            fontGap05: 0.4,//字间距
            input05: ''
        };

        function generateSeal(companyName, securityCode) {
            context.clearRect(0, 0, canvas.width, canvas.height);

            var width = canvas.width / 2;
            var height = canvas.height / 2;

            // 绘制印章边框
            context.lineWidth = 4;
            context.strokeStyle = "#f00";
            context.beginPath();
            context.arc(width, height, 100, 0, Math.PI * 2);
            context.stroke();

            // 绘制五角星
            create5star(context, width, height, 30, "#f00");

            // 绘制印章名称
            context.font = '20px 宋体';
            context.textBaseline = 'middle';
            context.textAlign = 'center';
            context.fillStyle = '#f00';
            context.fillText("专用章", width, height + 60);

            // 绘制公司名称
            context.save();
            context.translate(width, height);
            context.font = '26px 宋体';
            var count = companyName.length;
            var angle = 4 * Math.PI / (3 * (count - 1));
            var chars = companyName.split("");

            for (var i = 0; i < count; i++) {
                var c = chars;
                context.rotate(i === 0 ? (5 * Math.PI / 6) : angle);
                context.save();
                context.translate(80, 0);
                context.rotate(Math.PI / 2);
                context.fillText(c, 5, 0);
                context.restore();
            }
            context.restore();

            // 绘制防伪码
            context.save();
            context.translate(width, height );
            context.font = `${config.fontWeight05} ${config.fontSize05 * config.sealScale09}px ${config.fontFamily05}`;
            var securityCodeChars = securityCode.split("");
            var securityCodeLength = securityCodeChars.length;
            var securityCodeAngle = -4 * Math.PI / ((8.6 - config.fontGap05 * 0.4) * (securityCodeLength - 1)); //字间距;
            
            for (var i = 0; i < securityCodeLength; i++) {
                var cs = securityCodeChars;
                context.rotate(i === 0 ? -7.5 * Math.PI / 6 : securityCodeAngle); //首数字位置;
                context.save();
                context.translate(86 , 0);
                context.rotate(-Math.PI / 2);
                context.fillText(cs, 0, 0);
                context.restore();
            }
            context.restore();
        }

        function create5star(context, sx, sy, radius, color) {
            context.save();
            context.fillStyle = color;
            context.translate(sx, sy);
            context.rotate(Math.PI);
            context.beginPath();
            var x = Math.sin(0);
            var y = Math.cos(0);
            var dig = Math.PI / 5 * 4;
            for (var i = 0; i < 5; i++) {
                x = Math.sin(i * dig);
                y = Math.cos(i * dig);
                context.lineTo(x * radius, y * radius);
            }
            context.closePath();
            context.stroke();
            context.fill();
            context.restore();
        }

        // 实时更新画布内容
        function updateCanvas() {
            var companyName = document.getElementById('companyName').value;
            var securityCode = document.getElementById('securityCode').value;
            generateSeal(companyName, securityCode);
        }

        document.getElementById('companyName').addEventListener('input', updateCanvas);
        document.getElementById('securityCode').addEventListener('input', updateCanvas);

        // 初始化时绘制默认内容
        updateCanvas();
    </script>
</body>
</html>

点评

这个我都不知道在哪里输入文字替换了   重庆市重庆市  发表于 2024-8-13 15:35
这个有点看不懂了,没有刚才那个好理解,编码方式换了的原因?   重庆市重庆市  发表于 2024-8-13 15:33
回复 支持 反对

使用道具 举报

结帖率:100% (6/6)

签到天数: 21 天

发表于 2024-8-13 14:06:07 | 显示全部楼层   新疆维吾尔自治区昌吉回族自治州
感谢分享学习
回复 支持 反对

使用道具 举报

结帖率:88% (119/136)

签到天数: 20 天

发表于 2024-8-13 11:37:04 | 显示全部楼层   广东省惠州市
不是易语言的
回复 支持 反对

使用道具 举报

签到天数: 15 天

发表于 2024-8-13 11:29:59 | 显示全部楼层   江西省上饶市
感谢分享
回复 支持 反对

使用道具 举报

结帖率:87% (95/109)

签到天数: 11 天

发表于 2024-8-13 11:27:21 | 显示全部楼层   浙江省杭州市
要做出这样的才是王道
回复 支持 反对

使用道具 举报

结帖率:97% (62/64)

签到天数: 22 天

发表于 2024-8-13 11:15:21 | 显示全部楼层   重庆市重庆市
本帖最后由 cqcc 于 2024-8-13 12:22 编辑

5.png
这个副标题(回帖专用章),目前是横向,改成有幅度的可以吗?就像(精易论坛源码区) 这几个字一样,挨着圆形转圈放到最下面。
就像8楼那个印章下面一部分一样怎么修改?
tsyz.png


回复 支持 反对

使用道具 举报

结帖率:90% (18/20)

签到天数: 11 天

发表于 2024-8-13 10:57:33 | 显示全部楼层   安徽省芜湖市
支持开源~!感谢分享
回复 支持 反对

使用道具 举报

结帖率:82% (9/11)

签到天数: 22 天

发表于 2024-8-13 10:50:33 | 显示全部楼层   河南省商丘市
这个不错,学习一下。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表