废话就不多说了,多说废话也没有什么用……
来一张图片说明:
这下可明白我说的是修改哪里的颜色了吧。
那好接下来我们就开始…废话还不快点上代码。
package com.google.zxing.qrcode.encoder
public final class ByteMatrix
首先 定义一下两个List
//定位点的外边框位置点
public final List<MyPoint> outLinePosition = new ArrayList();
//定位点的内边框位置点
public final List<MyPoint> insideLinePosition = new ArrayList();
接着还要在该类中写两个方法,如下:
public byte getOutLine(int x, int y){
boolean a = false;
for(MyPoint p:outLinePosition){
if(x == p.x && y == p.y){
a = true;
break;
}
}
if(a){
return bytes[x][y];
}else{
return 0;
}
}
public byte getInsideLine(int x, int y){
boolean a = false;
for(MyPoint p:insideLinePosition){
if(x == p.x && y == p.y){
a = true;
break;
}
}
if(a){
return bytes[x][y];
}else{
return 0;
}
}
package com.google.zxing.qrcode.encoder;
final class MatrixUtil
这是最核心的操作,在这里把定位点的数据添加到ByteMatrix中。
private static void embedPositionDetectionPattern(int xStart, int yStart, ByteMatrix matrix) {
for (int y = 0; y < 7; ++y) {
for (int x = 0; x < 7; ++x) {
matrix.set(xStart + x, yStart + y, POSITION_DETECTION_PATTERN[y][x]);
if(POSITION_DETECTION_PATTERN[y][x] == 1){
MyPoint p = new MyPoint(xStart + x,yStart + y);
if(x == 0 || y == 0 || x == 6 || y ==