当前位置: 首页 > news >正文

做电商网站前端的技术选型是九里徐州网站开发

做电商网站前端的技术选型是,九里徐州网站开发,网络营销专业好不好,领英创建公司主页软件版本 IntelliJ IDEA#xff1a;2023.2 JDK#xff1a;17 Tomcat#xff1a;10.1.11 Maven#xff1a;3.9.3 技术栈 servlet谷歌的#xff1a;zxing 生成普通的黑白二维码在二维码中间添加一个小图标 github开源项目#xff1a;qrcode qrcode开源项目的内部是基于z…软件版本 IntelliJ IDEA2023.2 JDK17 Tomcat10.1.11 Maven3.9.3 技术栈 servlet谷歌的zxing 生成普通的黑白二维码在二维码中间添加一个小图标 github开源项目qrcode qrcode开源项目的内部是基于zxing实现的可以让二维码更加酷炫 项目结构 环境搭建 创建Empty Project 设置SDK 设置Maven 注意自己安装的maven中settings配置文件中已经配置了本地仓库的位置 添加web支持 右键项目 添加框架支持 注意如果File菜单中没有上图的“Add Framework Support…”怎么办 这样File菜单中就有了。 继续添加框架支持web4.0不创建web.xml文件 pom.xml文件配置 ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.powernode/groupIdartifactIdqrcode/artifactIdversion1.0-SNAPSHOT/versionpackagingwar/packagingdependenciesdependencygroupIdjakarta.servlet/groupIdartifactIdjakarta.servlet-api/artifactIdversion6.0.0/versionscopeprovided/scope/dependency/dependenciespropertiesmaven.compiler.source17/maven.compiler.sourcemaven.compiler.target17/maven.compiler.targetproject.build.sourceEncodingUTF-8/project.build.sourceEncoding/properties/project打包方式war引入servlet依赖 确认web的根是否正确重点 设置tomcat并部署应用 这个地方可能有些小伙伴还没有安装tomcatmac推荐使用homebrew安装tomcat 然后这个Configure这里需要我们自己去找: 在终端输入以获取tomcat路径 brew ls tomcat然后依次按照所给tomcat路径去找到自己的tomcat 启动tomcat并访问 zxing相关依赖 !--zxing依赖-- dependencygroupIdcom.google.zxing/groupIdartifactIdcore/artifactIdversion3.1.0/version /dependency dependencygroupIdcom.google.zxing/groupIdartifactIdjavase/artifactIdversion3.1.0/version /dependency!--commons-lang依赖-- dependencygroupIdcommons-lang/groupIdartifactIdcommons-lang/artifactIdversion2.6/version /dependencyzxing常用API EncodeHintType编码提示类型 EncodeHintType是用来设置二维码编码时的一些额外参数的枚举类型常用枚举值如下 ERROR_CORRECTION 误差校正级别。对于黑白二维码可选值为L(7%)、M(15%)、Q(25%)、H(30%)表示二维码允许破损的最大容错率。在二维码出现破损时根据设置的容错率级别可以尝试修复二维码中的一些数据。二维码在生成过程中可能会出现一些损坏或者缺失的情况例如打印时墨水耗尽、图像压缩、摄像头拍摄角度不对等。这些问题可能导致二维码无法完全识别或者识别出来的数据不准确而误差校正码就是为了解决这些问题而产生的。例如选择L级别的容错率相当于允许在二维码的整体颜色区域中最多可有约7%的坏像素点而选择H级别的容错率时最多可有约30%的坏像素点。注意误差校正级别的具体值需要通过ErrorCorrectionLevel的枚举值来获取。 CHARACTER_SET 编码字符集。可以设置使用的字符编码例如utf-8、gb2312等等。 MARGIN 二维码的空白区域大小。可以设置二维码周围的留白大小以便于在不同的嵌入场景中使用二维码。 MultiFormatWriter多格式写入程序 MultiFormatWriter是一个便捷的二维码生成类可以根据传入的BarcodeFormat参数生成对应类型的二维码。 MultiFormatWriter封装了一系列的二维码生成方法可以生成多种格式的二维码包括QR Code、Aztec Code、PDF417、Data Matrix等。 BarcodeFormat码格式 BarcodeFormat是枚举类通过它来制定二维码格式 QR Code QR Code是最常见的二维码格式之一广泛应用于商品包装、票务、扫码支付等领域。QR Code矩阵有黑白两种颜色其中黑色部分表示信息的编码白色部分则用于衬托和辨识。Aztec CodeAztec Code是一种高密度、可靠性很高的二维码格式。相比于其他二维码格式它具有更低的容错率、更小的尺寸和更高的解码效率。因此它适合用于储存一些核心信息例如个人信息、证件信息、账户密码等。PDF417是一种可以储存大量信息的二维码格式它具有数据密度高、可靠性强等优点可以应用于许多场景例如航空机票运输和配送标签法律文件等。Data Matrix是一种小巧的二维码格式它的编码方式类似于QR Code但是其可靠性、识别率、扫描速度和牢固度都比QR Code更优秀。由于尺寸较小、可靠性较高因此Data Matrix适合嵌入简单的产品标签、医疗图像、检测数据等领域。 BitMatrix位矩阵 BitMatrix是ZXing库中表示二维码矩阵的数据结构它是由0和1构成的二维数组用于存储二维码的编码信息。在二维码生成过程中我们通过对BitMatrix对象的构建和操作最终生成一个可被扫描解码的二维码图像。 BitMatrix实际上是一个紧凑型的布尔型二维数组往往只需要占用一个字节即可表示8位二进制。在使用BitMatrix时我们可以通过其不同的方法例如get()、set()等来获取、设置矩阵中每个位置的值。 在ZXing中BitMatrix常用于将编码后的信息转化为矩阵形式并进行图像的生成和输出。在使用ZXing生成二维码时我们首先需要使用MultiFormatWriter.encode()方法来生成一个BitMatrix然后在对BitMatrix进行各种处理和操作后就可以在UI中显示和输出二维码。 总的来说BitMatrix是ZXing库中非常重要的数据结构之一它负责存储和处理生成二维码图像所需的二进制信息是实现二维码生成功能的关键。 BitMatrix常用API getHeight()获取矩阵高度getWidth()获取矩阵宽度get(x, y)根据xy的坐标获取矩阵中该坐标的值。结果是true黑色或者false白色。 生成普通黑白二维码 前端代码 %--Created by IntelliJ IDEA.User: suyueDate: 2024/5/30Time: 16:21To change this template use File | Settings | File Templates. --% % page contentTypetext/html;charsetUTF-8 languagejava % htmlheadtitle使用JAVA语言生成二维码/title/headbodyh1使用Google的zxing二维码生成工具生成普通的黑白二维码/h1hr /请输入文本内容input typetext idurl/button onclickgenerateQRcode()生成二维码/buttonbr/hr /img src idqrcodeimg /scriptfunction generateQRcode() {let url document.getElementById(url).valuelet QRCode document.getElementById(qrcodeimg);QRCode.src /QRcode/generate?url url;}/script/body /html 后端代码 package com.powernode.qrcode.servlets;import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; import com.google.zxing.MultiFormatWriter; import com.google.zxing.common.BitMatrix; import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; import jakarta.servlet.ServletException; import jakarta.servlet.ServletOutputStream; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse;import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.HashMap; import java.util.Map;WebServlet(/generate) public class GenerateQRcode extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req, resp);}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {try {// 准备一个Map集合用来存储二维码图片的相关属性Map map new HashMap();// 设置误差校验级别map.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);// 设置字符编码因为文本内容要转换成二维码需要指定转换时采用的字符集map.put(EncodeHintType.CHARACTER_SET, utf-8);// 设置二维码的外边距map.put(EncodeHintType.MARGIN, 1);// 获取要生成二维码的文本内容String url request.getParameter(url);// 创建MultiFormatWriter对象MultiFormatWriter writer new MultiFormatWriter();// 传入内容、码的格式、宽度、高度、二维码参数。返回位矩阵对象。BitMatrix bitMatrix writer.encode(url, BarcodeFormat.QR_CODE, 300, 300, map);// 获取位矩阵的宽度和高度int width bitMatrix.getWidth();int height bitMatrix.getHeight();// 创建BufferedImage对象BufferedImage image new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);// 遍历位矩阵for (int x 0; x width; x) {for (int y 0; y height; y) {// 0xFF000000 黑色// 0xFFFFFFFF 白色image.setRGB(x, y, bitMatrix.get(x, y) ? 0xFF000000 : 0xFFFFFFFF);}}// 响应ServletOutputStream out response.getOutputStream();ImageIO.write(image, png, out);out.flush();out.close();} catch(Exception e){e.printStackTrace();}} } 运行效果 生成一个带logo的黑白二维码 %page contentTypetext/html;charsetUTF-8 pageEncodingUTF-8 % !doctype html html headtitle生成带有logo的黑白二维码/titlemeta charsetUTF-8 /head body form action/myqrcode/generateWithLogo methodpost enctypemultipart/form-data请输入文本内容input typetext nameurlbr请选择图片input typefile namelogobrinput typesubmit value生成带有logo的二维码/ /form /body /htmlpackage com.powernode.qrcode.servlets;import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; import com.google.zxing.MultiFormatWriter; import com.google.zxing.common.BitMatrix; import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.MultipartConfig; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.Part;import javax.imageio.ImageIO; import java.awt.*; import java.awt.geom.RoundRectangle2D; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.Map;WebServlet(/generateWithLogo) MultipartConfig(fileSizeThreshold 1024 * 1024 * 2, maxFileSize 1024 * 1024 * 10, maxRequestSize 1024 * 1024 * 100) public class GenerateQrCodeWithLogo extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {try {// 准备一个Map集合用来存放二维码的属性Map map new HashMap();map.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);map.put(EncodeHintType.CHARACTER_SET, UTF-8);map.put(EncodeHintType.MARGIN, 1);// 获取文本内容String url request.getParameter(url);// 创建zxing核心对象MultiFormatWriter writer new MultiFormatWriter();BitMatrix bitMatrix writer.encode(url, BarcodeFormat.QR_CODE, 300, 300, map);int width bitMatrix.getWidth();int height bitMatrix.getHeight();// 生成二维码BufferedImage bufferedImage new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);for (int x 0; x width; x) {for (int y 0; y height; y) {bufferedImage.setRGB(x, y, bitMatrix.get(x, y) ? 0xFF000000 : 0xFFFFFFFF);}}// 给二维码添加logo// 第一部分将logo缩放。// 获取上传的logo Part对象Part logo request.getPart(logo);// 通过Part对象获取输入流InputStream inputStream logo.getInputStream();// 通过ImageIO的read方法从输入流中读取从而获得logo图片Image logoImage ImageIO.read(inputStream);// 获取logo图片的宽度int logoWidth logoImage.getWidth(null);// 获取logo图片的高度int logoHeight logoImage.getHeight(null);// 如果logo的宽度或者高度大于100则重新赋值100if (logoWidth 60) {logoWidth 60;}if (logoHeight 60) {logoHeight 60;}// 使用平滑缩放算法对原logo图像进行缩放得到一个全新的图像。Image scaledLogo logoImage.getScaledInstance(logoWidth, logoHeight, Image.SCALE_SMOOTH);// 第二部分将缩放后的logo画到黑白二维码上// 获取2D画笔Graphics2D graphics2D bufferedImage.createGraphics();// 开始画的x和y坐标int x (300 - logoWidth) / 2;int y (300 - logoHeight) / 2;// 将缩放后的logo画上去graphics2D.drawImage(scaledLogo, x, y, null);// 创建一个具有指定位置、宽度、高度和圆角半径的圆角矩形。这个圆角矩形是用来绘制边框的。Shape shape new RoundRectangle2D.Float(x, y, logoWidth, logoHeight, 10, 10);// 使用一个宽度为4像素的基本笔触graphics2D.setStroke(new BasicStroke(4f));// 给logo画圆角矩形graphics2D.draw(shape);// 释放画笔graphics2D.dispose();// 响应ImageIO.write(bufferedImage, png, response.getOutputStream());} catch (Exception e) {e.printStackTrace();}}}运行效果 使用github开源项目qrcode dependencygroupIdcom.github.liuyueyi.media/groupIdartifactIdqrcode-plugin/artifactIdversion2.5.2/version /dependency生成黑白二维码 String url request.getParameter(url); BufferedImage image QrCodeGenWrapper.of(url).asBufferedImage(); ImageIO.write(image, png, response.getOutputStream());生成带有logo的二维码 String url request.getParameter(url);BufferedImage image QrCodeGenWrapper.of(url).setLogo(request.getPart(logo).getInputStream()).setLogoRate(7) // 设置 logo 图片与二维码之间的比例。在这个例子中它设置为 7表示 logo 的宽度等于二维码的 1/7。.setLogoStyle(QrCodeOptions.LogoStyle.ROUND) // 设置 logo 图片的样式。设置为 ROUND表示将 logo 的边框形状设置为圆形。.asBufferedImage();ImageIO.write(image, png, response.getOutputStream());生成彩色二维码 String url request.getParameter(url);BufferedImage image QrCodeGenWrapper.of(url).setDrawPreColor(Color.BLUE).asBufferedImage();ImageIO.write(image, png, response.getOutputStream());生成背景图二维码 String url request.getParameter(url);BufferedImage image QrCodeGenWrapper.of(url).setBgImg(request.getPart(logo).getInputStream()).setBgOpacity(0.7F).asBufferedImage();ImageIO.write(image, png, response.getOutputStream());特殊形状二维码 String url request.getParameter(url);BufferedImage image QrCodeGenWrapper.of(url).setDrawEnableScale(true) // 启用二维码绘制时的缩放功能.setDrawStyle(QrCodeOptions.DrawStyle.DIAMOND) // 指定绘制样式.asBufferedImage();ImageIO.write(image, png, response.getOutputStream());图片填充二维码 String url request.getParameter(url);BufferedImage image QrCodeGenWrapper.of(url).setErrorCorrection(ErrorCorrectionLevel.H) // 设置二维码的错误纠正级别.setDrawStyle(QrCodeOptions.DrawStyle.IMAGE) // 绘制样式采用图片填充.addImg(1, 1, request.getPart(logo).getInputStream()) // 添加图片.asBufferedImage();ImageIO.write(image, png, response.getOutputStream());生成gif动图二维码 String url request.getParameter(url);BufferedImage image QrCodeGenWrapper.of(url).setW(500).setH(500).setBgImg(request.getPart(logo).getInputStream()).setBgOpacity(0.6f).setPicType(gif).asBufferedImage();ImageIO.write(image, gif, response.getOutputStream());
http://www.dnsts.com.cn/news/46410.html

相关文章:

  • 做网站找俊义 合优事件营销
  • 跨境电商平台网站建设多少钱一级做ae视频片段怎么做
  • logo参考网站定制开发电商网站建设哪家好
  • 网站怎么做成手机版百度商城网站建设
  • 无锡网站制作优化排名app推广工作室
  • it网站开发培训中心威海制作网站
  • 政务服务网站建设标准中国做趋势的网站
  • html静态网站开发自我介绍网站设置关键字
  • 政法网站内容建设哪些平台可以发布推广信息
  • 企业建设网站公司有哪些怎么样建设企业网站
  • 简述网站建设的概念电商网站新闻怎么做的
  • 如何搭建网站后台建设银行境外汇款申请书网站
  • 互联网网站模版长春哪里做网站
  • 宿州哪家做网站好最有效的网站推广公司
  • 做一个交易平台网站的成本网站这么做
  • 个人网站欣赏申请关闭网站
  • 交互式网站开发技术山东省工程建设造价信息网站
  • 国外网站后缀网站开发费用计入什么科目
  • 珠海网站设计网络优化国内建站公司
  • wordpress定义一个变量佛山seo代理
  • 做冷库用什么网站发帖子好要解析做邮箱以及网站
  • 网页做好怎么变成网站网站的flash
  • 免费建手机商城网站公司工商查询
  • 畜牧业网站建设中文响应式网站
  • 手机微网站模板seo推广是什么工作
  • 免费个人网站在线制作张家港杨舍网站建设
  • 厦门网站建设哪家好查询网站注册时间
  • 手机端网站设计全栈网站开发流行框架
  • 网站建设公司公司我我提供一个平台做网站的国标有哪些
  • 专做实习生招聘的网站中国与菲律宾最新事件