美文网首页
2018-01-28 设计数据库,测试生成二维码

2018-01-28 设计数据库,测试生成二维码

作者: 辣鸡AI呀 | 来源:发表于2018-01-29 00:27 被阅读0次

设计数据库

要模拟一个学校的库,太难了!
脑子死机。
所以先设计了一部分,后续再不断完善。
使用navicat生成数据模型方法,参考http://blog.csdn.net/clevercode/article/details/51814701

cuz_0.1.28.png

我们的项目包定为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生成了二维码图片。


testQR.png

附上一个介绍带logo二维码的参考:http://blog.csdn.net/gao36951/article/details/41149049

这里发现了生成的二维码白边很宽的问题,百度了一下,参考http://blog.csdn.net/w815878564/article/details/51115562
然后有点麻烦,试了一下文章中说的加上一行代码
hints.put(EncodeHintType.MARGIN, 1);
效果如下:

testQR.png
个人感觉这种白框是最好的了,就不用其他更改了。
然后是qrcode方式,这里看了一下代码,比较复杂,需要qrcode.jar包。
有时间可以尝试一下,上面的网址里都有参考。

还有存入数据库和客户端调用的部分,明天写啦。

相关文章

网友评论

      本文标题:2018-01-28 设计数据库,测试生成二维码

      本文链接:https://www.haomeiwen.com/subject/qymzaxtx.html