当前位置: 首页 > 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.w-s-a.com/news/150136/

相关文章:

  • 凯里展示型网站设计抖音代运营收费详细价格
  • 外包网站会自己做原型吗网站制作怎样盈利
  • 为什么在百度搜不到我的网站电商网站开发过程
  • 什么是网站反链网页设计页面链接
  • 佛山企业网站制作韩国seocaso
  • 微信公司网站vue做社区网站
  • 蒙阴网站优化五核网站建设
  • 企业微商城网站建设wordpress新闻是哪个表
  • 重庆网站开发培训机构电商网站创办过程
  • 企业建网站得多少钱长沙财优化公司
  • 网站开发api平台扒完网站代码之后怎么做模板
  • PHP网站建设选择哪家好动画设计师月薪多少
  • 网站如何做市场推广网站开发主要步骤
  • 浏览器正能量网站网页文章导入wordpress
  • 江西中国建设银行网站首页永久免费自助建网站
  • 创建自己网站的步骤吸引人的微信软文
  • 网站建设与网页设计论述题软件开发公司在哪里
  • 二级网站建设方案模板亚马逊网站建设案例
  • 网站开发兼职团队门户网站如何制作
  • 高州市网站建设开发区招聘信息
  • 上海专业网站制作设计公司企业邮箱怎样注册
  • 网站建设在商标第几类网站建设 设计创意
  • 做一网站APP多少钱重庆中色十二冶金建设有限公司网站
  • 网上做效果图网站有哪些软件徐州泉山区建设局网站
  • 凯里网站制作网站篡改搜索引擎js
  • 如何使用凡科建设网站武安城乡建设网站
  • 网站建设网站及上传wordpress火车头发布
  • 有没有做网站的团队电脑版传奇网站
  • 建立企业网站公司医疗创意小产品设计
  • 深圳 做网站 车公庙免费的招标网有哪些