mirror of
https://github.com/starovoid/rxing.git
synced 2026-07-26 04:12:34 +00:00
perfect images of aztec pass, real world fail
This commit is contained in:
@@ -67,6 +67,16 @@ fn test_error_in_parameter_locator_not_compact() {
|
||||
test_error_in_parameter_locator(&format!("{}{}{}", alphabet, alphabet, alphabet));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_aztec_rxing_result_sample() {
|
||||
let matrix = BitMatrix::parse_strings(TEST_BARCODE, "X ", " ").expect("string parse success");
|
||||
let r = Detector::new(matrix).detect(false);
|
||||
assert!(r.is_ok());
|
||||
let r = r.expect("result already tested as ok");
|
||||
let res = decoder::decode(&r).expect("decode success");
|
||||
assert_eq!("Histórico", res.getText());
|
||||
}
|
||||
|
||||
// Test that we can tolerate errors in the parameter locator bits
|
||||
fn test_error_in_parameter_locator(data: &str) {
|
||||
let aztec = encoder::encoder::encode(data, 25, encoder::encoder::DEFAULT_AZTEC_LAYERS)
|
||||
@@ -260,3 +270,80 @@ fn get_orientation_points(code: &AztecCode) -> Vec<Point> {
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
const TEST_BARCODE: &str = r" X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
|
||||
";
|
||||
|
||||
@@ -177,8 +177,8 @@ fn testAztecWriter() {
|
||||
);
|
||||
// Test AztecWriter defaults
|
||||
let data = "In ut magna vel mauris malesuada";
|
||||
// let writer = AztecWriter{};
|
||||
let matrix = AztecWriter::encode(data, &BarcodeFormat::AZTEC, 0, 0).expect("matrix must exist");
|
||||
let writer = AztecWriter{};
|
||||
let matrix = writer.encode(data, &BarcodeFormat::AZTEC, 0, 0).expect("matrix must exist");
|
||||
let aztec = encoder::encode(
|
||||
data,
|
||||
encoder::DEFAULT_EC_PERCENT,
|
||||
@@ -732,7 +732,7 @@ fn testWriter(
|
||||
EncodeHintType::ERROR_CORRECTION,
|
||||
EncodeHintValue::ErrorCorrection(ecc_percent.to_string()),
|
||||
);
|
||||
let mut matrix = AztecWriter::encode_with_hints(data, &BarcodeFormat::AZTEC, 0, 0, &hints)
|
||||
let mut matrix = AztecWriter{}.encode_with_hints(data, &BarcodeFormat::AZTEC, 0, 0, &hints)
|
||||
.expect("encoder created");
|
||||
|
||||
let cset = match charset {
|
||||
|
||||
@@ -20,7 +20,7 @@ use crate::{
|
||||
common::{DecoderRXingResult, DetectorRXingResult},
|
||||
exceptions::Exceptions,
|
||||
BarcodeFormat, BinaryBitmap, DecodeHintType, DecodeHintValue, RXingResult,
|
||||
RXingResultMetadataType, Reader, RXingResultMetadataValue,
|
||||
RXingResultMetadataType, RXingResultMetadataValue, Reader,
|
||||
};
|
||||
|
||||
use super::{decoder, detector::Detector};
|
||||
@@ -40,7 +40,7 @@ impl Reader for AztecReader {
|
||||
* @throws NotFoundException if a Data Matrix code cannot be found
|
||||
* @throws FormatException if a Data Matrix code cannot be decoded
|
||||
*/
|
||||
fn decode(&self,image: &BinaryBitmap) -> Result<RXingResult, Exceptions> {
|
||||
fn decode(&self, image: &BinaryBitmap) -> Result<RXingResult, Exceptions> {
|
||||
self.decode_with_hints(image, &HashMap::new())
|
||||
}
|
||||
|
||||
@@ -52,11 +52,19 @@ impl Reader for AztecReader {
|
||||
// let notFoundException = None;
|
||||
// let formatException = None;
|
||||
let mut detector = Detector::new(image.getBlackMatrix()?.clone());
|
||||
let mut points;
|
||||
let mut decoderRXingResult: DecoderRXingResult;
|
||||
let points;
|
||||
let decoderRXingResult: DecoderRXingResult;
|
||||
// try {
|
||||
|
||||
let detectorRXingResult = detector.detect(false)?;
|
||||
let detectorRXingResult = if let Ok(det) = detector.detect(false) {
|
||||
det
|
||||
} else if let Ok(det) = detector.detect(true) {
|
||||
det
|
||||
} else {
|
||||
return Err(Exceptions::NotFoundException(
|
||||
"barcode not found".to_owned(),
|
||||
));
|
||||
};
|
||||
|
||||
points = detectorRXingResult.getPoints();
|
||||
decoderRXingResult = decoder::decode(&detectorRXingResult)?;
|
||||
@@ -67,9 +75,9 @@ impl Reader for AztecReader {
|
||||
// }
|
||||
// if (decoderRXingResult == null) {
|
||||
// try {
|
||||
let detectorRXingResult = detector.detect(true)?;
|
||||
points = detectorRXingResult.getPoints();
|
||||
decoderRXingResult = decoder::decode(&detectorRXingResult)?;
|
||||
// let detectorRXingResult = detector.detect(true)?;
|
||||
// points = detectorRXingResult.getPoints();
|
||||
// decoderRXingResult = decoder::decode(&detectorRXingResult)?;
|
||||
// } catch (NotFoundException | FormatException e) {
|
||||
// if (notFoundException != null) {
|
||||
// throw notFoundException;
|
||||
@@ -101,19 +109,26 @@ impl Reader for AztecReader {
|
||||
.as_millis(),
|
||||
);
|
||||
|
||||
|
||||
|
||||
let byteSegments = decoderRXingResult.getByteSegments();
|
||||
if !byteSegments.is_empty() {
|
||||
result.putMetadata(RXingResultMetadataType::BYTE_SEGMENTS, RXingResultMetadataValue::ByteSegments(byteSegments.clone()));
|
||||
result.putMetadata(
|
||||
RXingResultMetadataType::BYTE_SEGMENTS,
|
||||
RXingResultMetadataValue::ByteSegments(byteSegments.clone()),
|
||||
);
|
||||
}
|
||||
let ecLevel = decoderRXingResult.getECLevel();
|
||||
if !ecLevel.is_empty() {
|
||||
result.putMetadata(RXingResultMetadataType::ERROR_CORRECTION_LEVEL, RXingResultMetadataValue::ErrorCorrectionLevel(ecLevel.to_owned()));
|
||||
result.putMetadata(
|
||||
RXingResultMetadataType::ERROR_CORRECTION_LEVEL,
|
||||
RXingResultMetadataValue::ErrorCorrectionLevel(ecLevel.to_owned()),
|
||||
);
|
||||
}
|
||||
result.putMetadata(
|
||||
RXingResultMetadataType::SYMBOLOGY_IDENTIFIER,
|
||||
RXingResultMetadataValue::SymbologyIdentifier(format!("]z{}", decoderRXingResult.getSymbologyModifier())),
|
||||
RXingResultMetadataValue::SymbologyIdentifier(format!(
|
||||
"]z{}",
|
||||
decoderRXingResult.getSymbologyModifier()
|
||||
)),
|
||||
);
|
||||
|
||||
Ok(result)
|
||||
|
||||
Reference in New Issue
Block a user