一、实现原理:将网址看做字符串后用二进制转化成0与1来表示,在用0表示黑色,1表示白色,再在绘图界面上将每一个黑白像素点扩大成小矩形绘制出来,得到上述图片。
二、代码
1、将网址转化为2位二进制存进数组中
public String[] StringtoBiarray(){
String str = "https://bilibili.com";
String []binaryStrar = new String [str.length()];
// 取出单个的字符
for (int i = 0; i < str.length(); i++) {
//将不规则的字符串转为整数
char strtoBiary= str.charAt(i);
//用int类型吸收char类型
int biary=strtoBiary;
//将整数转为二进制
String binaryStr=Integer.toBinaryString(biary);
//将二进制补为8位,前面补零
while(binaryStr.length()<8) {
binaryStr = 0 + binaryStr;
}
System.out.println(binaryStr);
//将二进制码存储入数组
binaryStrar[i]=binaryStr;
}
return binaryStrar;
}
2、构造方法
public QRCodeUI(){
setTitle("二维码图片");
setSize(900,800);
setDefaultCloseOperation(3);
setVisible(true);
}
3、主函数
public static void main(String[] args) {
QRCodeUI qrCodeUI = new QRCodeUI();
QRCode qrCode = new QRCode();
//创建对象后,调用方法
qrCodeUI.binaryStrArray = qrCode.StringtoBiarray();
}
4、paint
public void paint(Graphics g) {
super.paint(g);
//绘制图形
for (int i = 0; i < binaryStrArray.length; i++) {
String str = binaryStrArray[i];
for (int j = 0; j < str.length(); j++) {
//注意i和j
char c = str.charAt(j);
if(c=='0'){
g.setColor(Color.white);
}else{
g.setColor(Color.black);
}
g.fillRect(50+i*30,50+j*30,30,30);//每个小矩形位置变化,长宽30
}
}
}