設(shè)計(jì)數(shù)據(jù)庫(kù)
要模擬一個(gè)學(xué)校的庫(kù)椎侠,太難了!
腦子死機(jī)措拇。
所以先設(shè)計(jì)了一部分我纪,后續(xù)再不斷完善。
使用navicat生成數(shù)據(jù)模型方法丐吓,參考http://blog.csdn.net/clevercode/article/details/51814701
我們的項(xiàng)目包定為cuz_welcome
浙傳迎新版本號(hào)規(guī)則
格式:0.0.0
正式線上版本更新浅悉,第一位+1,第二三位為更新日期券犁,例1.1.28
測(cè)試版本每日更新术健,第二三位為當(dāng)日日期,例0.1.28
所以現(xiàn)在的版本是0.1.28粘衬,留念荞估。
生成二維碼
今天最重要的任務(wù)是把生成二維碼弄出來(lái),雖然很晚了稚新。
先寫(xiě)一下想要實(shí)現(xiàn)的效果勘伺。
- 生成二維碼
- 二維碼存入服務(wù)器
- 地址存入數(shù)據(jù)庫(kù)
- 客戶端可以取到二維碼
java生成二維碼方法,參考http://blog.csdn.net/qq_21916331/article/details/52117420
zxing二維碼生成jar包褂删,參考http://blog.csdn.net/u012453843/article/details/71436688
java的絕對(duì)路徑和相對(duì)路徑飞醉,參考https://www.cnblogs.com/xzwblog/p/6906167.html
用到的jar包:
- zxing-3.3.0.jar (看上面下載github項(xiàng)目自己生成或者百度google)
- javase-3.2.1.jar 上面包里沒(méi)有,找了例子項(xiàng)目里的jar直接拿過(guò)來(lái)了
寫(xiě)完的encode方法:(原來(lái)例子里面的部分參數(shù)改成了傳參進(jìn)去)
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 = "測(cè)試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生成了二維碼圖片缅帘。
附上一個(gè)介紹帶logo二維碼的參考:http://blog.csdn.net/gao36951/article/details/41149049
這里發(fā)現(xiàn)了生成的二維碼白邊很寬的問(wèn)題,百度了一下蹲盘,參考http://blog.csdn.net/w815878564/article/details/51115562
然后有點(diǎn)麻煩股毫,試了一下文章中說(shuō)的加上一行代碼
hints.put(EncodeHintType.MARGIN, 1);
效果如下:
個(gè)人感覺(jué)這種白框是最好的了,就不用其他更改了召衔。
然后是qrcode方式,這里看了一下代碼祭陷,比較復(fù)雜苍凛,需要qrcode.jar包。
有時(shí)間可以嘗試一下兵志,上面的網(wǎng)址里都有參考醇蝴。
還有存入數(shù)據(jù)庫(kù)和客戶端調(diào)用的部分,明天寫(xiě)啦想罕。