二维码扫一扫java开发
一.正言
在大家在这里分享曾经以为很6的技术,其实会了就很简单,以下项目就是输入你的内容或链接或图片,别人可以扫码关注你。
二.项目讲解
ReadMe
java 开发二维码扫描技术
1.新建一个Javaweb项目。
2.确定需求,建立静态页面。
3.编写业务逻辑,生成二维码。
4.保存在自己的服务器。
5.读取到我们的页面
6.测试(内测《黑盒测试,白盒测试》,公测)
7.试运行
8.上线
9.运营,不断的根据我们用户迭代更新(改版)
qrcode.jsp中:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!doctype html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>安东java开发二维码web.html--</title>
<neta name="Keywords" content="关键词,关键词">
<neta name="description" content="">
<!--css: 层叠样式表,一件美丽的外衣-->
<style type="text/css">
*{margin:0;padding:0;} /* 把外、内边框边缘置为0,不受控制 就可自己设置 */
body{font-size:12px;font-family:"微软雅黑";color:#666;}
/*以“.”开头的CSS样式称为 类样式*/
.qrcode{width:700px;height:300px;background:#009933;margin:200px auto;}
.qrcode h1{font-size:24px;border:1px solid red;text-align:center;color:#000000;}
.qrcode .message{width:700px;height:200px;}
.qrcode .sub{width:700px;height:40px;border:0;font-size:30px;color:#000099;font-family:"微软雅黑";font-weight:bold;background:#ff00ff;}
</style>
</head>
<body>
<!--div:层,盒子,容器
1不能以数字开头
2
-->
<form action="qrcode_img.jsp" method="post">
<div class="qrcode">
<h1> 曾经有小猫和小狗 他们分别叫大东小兰 哈比</h1>
<textarea class="message" name="message"> </textarea>
<input type="submit" value="提 交" class="sub"/>
</div>
</form>
</body>
</html>
qrcode_img.jsp
<%@ page language="java" import="java.util.*,com.util.QrcodeUtil" pageEncoding="utf-8"%>
<!doctype html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>二维码显示</title>
<neta name="Keywords"content="关键词">
<neta name="description" content="">
<style type="text/css">
*{margin:0;padding:0;}
body{font-size:12px;font-family:"微软雅黑";color:#cc0000;}
.qrcode_img{width:600px;border:1px solid red;margin:200px auto;text-align:center;}
.qrcode_img img{margin:80px auto;}
</style>
</head>
<body>
<div class="qrcode_img">
<h1> 扫一扫你就知道不一样的惊喜! </h1>
<%
request.setCharacterEncoding("GBK");
String messge=request.getParameter("message");
//动态取一个文件的名称
String fileName="andong"+new Date().getTime();
String imaPath=request.getRealPath("/")+"/"+fileName;//获取服务器根目录
//调用生成二维码的方法
QrcodeUtil.QrcodeImage(messge, imaPath);
out.print("<img src='"+fileName+"'/>");
%>
<img src="images/andong.jpg"/>
<h2> 湖北交通大学软件工程 安东 个人QQ:2756625920</h2>
</div>
</body>
</html>
QrcodeUtil.java中:
package com.util;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import java.io.File;
import javax.imageio.ImageIO;
import com.swetake.util.Qrcode;
public class QrcodeUtil {
/**
* java生成二维码
* @author Administrator
*
*/
/**
* 根据内容生成二维码
* content 表示生成二维码的内容
* imgPath 表示需要保持二维码图片值的路径
*/
public static void QrcodeImage(String content,String imgPath){
int width=140;
int height=140;
try{
//实例化Qrcode
Qrcode qrcode=new Qrcode();
//设置纠错能力L%7,M%15,Q%25,H%30,越大 空间越大
qrcode.setQrcodeErrorCorrect('M');
qrcode.setQrcodeEncodeMode('B');//设置编码,B表示二建制
//设置二维码的尺寸 ,取值范围(1-40)
qrcode.setQrcodeVersion(7);
//设置图片的尺寸;//BufferedImage.TYPE_3BYTE_BGR表示创建一个具有8位RGB颜色的分量图像
BufferedImage bufImg=new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR);
//绘制二维码的图片,创建画笔工具
Graphics2D gs=bufImg.createGraphics(
);
//设置矩形区域的背景颜色
gs.setBackground(Color.WHITE);
//创建二维码的矩形局域
gs.clearRect(0, 0, width, height);
//设置二维码图片的颜色值
gs.setColor(Color.red);//设置为红色
//设置内容字节数组,设置编码集
byte[] contentBytes=content.getBytes("gb2312");
//输出二维码
if(contentBytes.length>0){
boolean [][]codeOut=qrcode.calQrcode(contentBytes);
for(int i=0;i<codeOut.length;i++){
for(int j=0;j<codeOut.length;j++){
if(codeOut[j][i]){
//根据布尔数组填充图片的格点;2 偏移量
gs.fillRect(j*3 +2, i*3 +2, 3, 3);
}
}
}
}else{
System.out.println("对不起!出错了,你输入的信息有误!");
}
gs.dispose();//释放画笔工具
bufImg.flush();//将残留的数据推出缓冲区
//二维码图片输出
File imgFile=new File(imgPath);
//以流的方式将image二维码图片输出
ImageIO.write(bufImg, "jpg",imgFile);
System.out.println("生成二维码成功!");
}catch(Exception e){
e.getStackTrace();//堆栈
}
}
public static void main(String[] args) {
System.out.println("就算全世界灭亡!我也依然爱着你!!!");
String content=" 小猫 爱小狗 ";
String imgPath="E:/二维码生成图片/andong.jpg";
QrcodeImage(content,imgPath);
}
}
三。运行效果