設計數據庫
要模擬一個學校的庫,太難了!
腦子死機。
所以先設計了一部分,后續再不斷完善。
使用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包。
有時間可以嘗試一下,上面的網址里都有參考。
還有存入數據庫和客戶端調用的部分,明天寫啦。