设计数据库
要模拟一个学校的库,太难了!
脑子死机。
所以先设计了一部分,后续再不断完善。
使用navicat生成数据模型方法,参考http://blog.csdn.net/clevercode/article/details/51814701
我们的项目包定为cuz_welcome
浙传迎新版本号规则
格式:0.0.0
正式线上版本更新,第一位+1,第二三位为更新日期,例1.1.28
测试版本每日更新,第二三位为当日日期,例0.1.28
所以现在的版本是0.1.28,留念。
生成二维码
今天最重要的任务是把生成二维码弄出来,虽然很晚了。
先写一下想要实现的效果。
- 生成二维码
- 二维码存入服务器
- 地址存入数据库
- 客户端可以取到二维码
java生成二维码方法,参考http://blog.csdn.net/qq_21916331/article/details/52117420
zxing二维码生成jar包,参考http://blog.csdn.net/u012453843/article/details/71436688
java的绝对路径和相对路径,参考https://www.cnblogs.com/xzwblog/p/6906167.html
用到的jar包:
- zxing-3.3.0.jar (看上面下载github项目自己生成或者百度google)
- javase-3.2.1.jar 上面包里没有,找了例子项目里的jar直接拿过来了
写完的encode方法:(原来例子里面的部分参数改成了传参进去)
package cuz_welcome;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.nio.file.FileSystems;
import java.nio.file.Path;
import java.util.HashMap;
import java.util.Map;
import javax.imageio.ImageIO;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.Binarizer;
import com.google.zxing.BinaryBitmap;
import com.google.zxing.DecodeHintType;
import com.google.zxing.EncodeHintType;
import com.google.zxing.LuminanceSource;
import com.google.zxing.MultiFormatReader;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.NotFoundException;
import com.google.zxing.Result;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.common.HybridBinarizer;
public class QRcode
{
/**
* 生成二维码
*
* @throws WriterException
* @throws IOException
*/
public static void encode(String content, String filePath, String fileName, int width, int height, String format) throws WriterException, IOException
{
// String filePath = "./qr/";
// String fileName = "zxing.png";
// String content = "测试zxing生成二维码";
// int width = 600; // 图像宽度
// int height = 600; // 图像高度
// String format = "png";// 图像类型
Map<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>();
hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height, hints);// 生成矩阵
Path path = FileSystems.getDefault().getPath(filePath, fileName + "." + format);
MatrixToImageWriter.writeToPath(bitMatrix, format, path);// 输出图像
System.out.println("输出成功。位置:" + path);
}
}
然后是Test类:
package cuz_welcome;
import java.io.IOException;
import com.google.zxing.WriterException;
public class Test
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
try
{
QRcode.encode("喵喵喵", "./qr/", "testQR", 400, 400, "png");
}
catch (WriterException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
最后在.\qr\testQR.png生成了二维码图片。
附上一个介绍带logo二维码的参考:http://blog.csdn.net/gao36951/article/details/41149049
这里发现了生成的二维码白边很宽的问题,百度了一下,参考http://blog.csdn.net/w815878564/article/details/51115562
然后有点麻烦,试了一下文章中说的加上一行代码
hints.put(EncodeHintType.MARGIN, 1);
效果如下:
个人感觉这种白框是最好的了,就不用其他更改了。
然后是qrcode方式,这里看了一下代码,比较复杂,需要qrcode.jar包。
有时间可以尝试一下,上面的网址里都有参考。
还有存入数据库和客户端调用的部分,明天写啦。