Browse our Products
Aspose.BarCode for Java 7.5.0 Release Notes
Aspose.BarCode for Java has been updated to version 7.5.0 and we are pleased to announce it.
New Features
BARCODENET-34310 Implement GS1 QR decoding Enhancements BARCODJAVA-33592 Implement getting readable type name from BarcodeReadType BARCODJAVA-33507 Can’t recognize Aztec code from the JPG image BARCODJAVA-33506 Can’t recognize Aztec code from the JPG image BARCODENET-34309 Reorganize the logic of recognition in manual hint mode to speed up the detection BARCODENET-33812 Add support to encode GS1QR code BARCODENET-34319 DataBarStackedOmniDirectional encoding, BarCodeBuilder.BarHeight property does not work properly BARCODENET-34311 Unwanted White Space at the bottom of Barcode Image BARCODENET-34295 AI Codes Not Accepting Valid Values for GS1DataMatrix BARCODENET-34294 AI Codes Not Accepting Valid Values for GS1Code128 BARCODENET-34292 Barcode Reader skips a binary character BARCODENET-34163 Can’t recognize Aztec code from the JPG image BARCODENET-34162 Can’t recognize Aztec code from the JPG image BARCODENET-33843 Can’t recognize all DataMatrix/Code128 codes from a tif file BARCODENET-33827 Can’t recognize DataMarix code and incorrect text detection of Code 128 BARCODENET-33250 Implement a BarCodeReader constructor that could accept a list of Rectangles
Usage examples:
BARCODJAVA-33592 Implement getting readable type name from BarcodeReadType
Implements method representing BarcodeReadType name as follows:
'BarCode type : BarCode text'
long expectedType = BarCodeReadType.DataMatrix;
String expectedResult =
"doc:3f820419c87d4a878bafd17d2add8d2d009"
;
BarCodeReader reader = new BarCodeReader(folder +
"/image0.jpg"
, BarCodeReadType.DataMatrix);
while (reader.read())
{
System.out.println(reader.getReadTypeName() +
" : "
\+ reader.getCodeText());
}
DataMatrix : doc:3f820419c87d4a878bafd17d2add8d2d009
BARCODENET-33812 Add support to encode GS1QR code
Code sample:
String text =
"(01)04912345123459(15)970331(30)128(10)ABC123"
;
BarCodeBuilder builder = new BarCodeBuilder(text, Symbology.GS1QR);
builder.save(
"GS1QR.png"
, BarCodeImageFormat.Png);
BARCODENET-34310 Implement GS1 QR decoding
Code sample
String expectedResult =
"(01)04912345123459(15)970331(30)128(10)ABC123"
;
BarCodeReader reader = new BarCodeReader(
"GS1QR.png"
, BarCodeReadType.GS1QR);
reader.read();
Result:
GS1QR: (01)04912345123459(15)970331(30)128(10)ABC123
BARCODENET-34319 DataBarStackedOmniDirectional encoding, BarCodeBuilder.BarHeight property does not work properly
Code sample:
BarCodeBuilder b = new BarCodeBuilder(
"(01)90013670000396(3200)15(11)150819"
);
b.setSymbologyType(Symbology.DatabarStackedOmniDirectional);
b.setxDimension(0.330f);
b.setBarHeight(27.77f);
b.setResolution(new Resolution(1200.0f, 1200.0f, ResolutionMode.Customized));
b.save(
"Barheight.png"
, BarCodeImageFormat.Png);
Results in case of resolution 1200:
xDimension: 0.264, BarHeight: 18.22 --> actual BarHeight: 18.20
xDimension: 0.264, BarHeight: 18.24 --> actual BarHeight: 18.25
xDimension: 0.330, BarHeight: 27.77 --> actual BarHeight: 27.77
xDimension: 0.330, BarHeight: 27.78 --> actual BarHeight: 27.77
xDimension: 0.495, BarHeight: 34.16 --> actual BarHeight: 34.14
xDimension: 0.660, BarHeight: 45.54 --> actual BarHeight: 45.53
xDimension: 0.660, BarHeight: 62.70 --> actual BarHeight: 62.72
Offset can be 1px to hold equal height of rows, and 0.5 px is a rounding error.
Max offset 1.5px = 0.03mm for 1200 DPI.
1mm - 48px
1mm - 48px
1px - 0.02 mm
1px - 0.02 mm
1.5px - 0.03mm
1.5px - 0.03mm
BARCODENET-34311 Unwanted White Space at the bottom of Barcode Image
Code sample
BarCodeBuilder builder = new BarCodeBuilder();
builder.setSupplementSpace(0);
builder.setCodeTextSpace(0);
builder.setMargins(new MarginsF(0, 0, 0, 0));
builder.setSymbologyType(Symbology.EAN13);
builder.setCodeText(
"000080283188"
);
builder.save(
"image.bmp"
, BarCodeImageFormat.Png);
To set barcode height or width, please use BarHeight and xDimension properties.
Changing ImageHeight or ImageWidth will not affect the barcode size,
but Only image size will be affected, in case Autosize has been set to false.
BARCODENET-34309 Reorganize the logic of recognition in manual hint mode to speed up the detection
The calculated time using manual hints must be lesser than using max quality mode.
Code sample (manual hints )
long expectedBarcodeReadType = BarCodeReadType.DataMatrix;
String expectedCodeText =
":AAAAvGg0ByEJ9w|ac"
;
BarCodeReader reader = new BarCodeReader(
"Untitled22.jpg"
, BarCodeReadType.DataMatrix);
reader.setRecognitionMode(RecognitionMode.ManualHints);
reader.setManualHints(ManualHint.MedianSmoothing);
reader.read();
Result:
DataMatrix: :AAAAvGg0ByEJ9w|ac
Time: *2344ms*.
BARCODENET-34295 AI Codes Not Accepting Valid Values for GS1DataMatrix
Code sample:
BarCodeBuilder builder = new BarCodeBuilder(
"(01)90013670000396(3400)123456"
); // Or any of the above values
builder.setSymbologyType(Symbology.GS1DataMatrix);
builder.save(
"GS1DataMatrix.png"
, BarCodeImageFormat.Png);
BARCODENET-34294 AI Codes Not Accepting Valid Values for GS1Code128
Code sample:
BarCodeBuilder b = new BarCodeBuilder(
"(01)90013670000396(3400)123456"
); // Or any of the above values
b.setSymbologyType(Symbology.GS1Code128); // Or GS1DataMatrix
b.save(
"OutGS1Code128.png"
, BarCodeImageFormat.Png);
BARCODENET-34292 Barcode Reader skips a binary character
Code sample
BarCodeReader reader = new BarCodeReader(
"TestY.jpg"
, BarCodeReadType.Pdf417);
reader.read();
Result:
30 33 32 35 37 32 31 35 38 31 00 00 00 00 00 00
00 00 00 00 00 00 00 00 50 75 62 44 53 4b 5f 31
00 00 00 00 00 00 00 00 31 34 33 38 33 35 34 31
31 30 31 33 35 38 38 39 38 36 4c 4f 4d 42 41 4e
41 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 4d 41 52 54 49 4e 45 5a 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 4d 41 52 49 41 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 59
49 4e 45 54 54 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 30 46 31 39 38 37 30 35 32 37
31 35 30 30 31 30 4f 2b 00 32 02 43 00 b6 54 ff
80 80 83 85 4d ab 74 cd 42 a1 3b 81 a9 83 b7 75
bc 6f a7 75 b5 66 b6 47 9c 78 a6 4f b0 5d 30 65
a8 5c 3a 61 91 41 94 54 4b 5c 56 62 5b 71 93 74
6c 4f 89 53 90 62 91 70 7e 72 58 3f 72 5a 83 bf
83 b7 57 ac 72 96 8c 9f 91 b2 8d 97 9b ae 2c a7
96 8d 9a bc 9c a3 a0 95 a5 c0 aa a7 49 8f 98 cf
ad 96 af ac 28 87 9f 88 ad bf b4 90 b5 ac c9 7a
30 81 b5 7e b9 63 3f 81 36 5e 5b 75 6f 10 49 5b
58 70 5b 58 66 54 7d 7b ef ba 1b a3 24 85 50 fe
57 48 2c a2 90 d4 25 e6 ff 00 37 02 43 00 d1 54
ff 80 80 63 a5 46 97 46 9f 86 83 50 92 38 96 30
81 94 a7 a3 ae d3 4e ac 7f ca 5d 9d 70 a4 6a ca
42 da 6f a2 5a e1 84 50 70 96 62 a2 4f 96 59 9d
41 89 4b 89 6a 8d 62 4f 5f 7d 3e 82 45 8c 5a 73
43 54 61 6a 62 7b 57 6f a9 78 b8 82 95 8c 83 50
9d 51 c3 60 9a 83 8c 8a b8 8e 8e 8e a0 32 9e 89
ad 9c a8 9f 94 9d a0 9b b6 a9 b3 b3 a7 97 c5 9b
81 a5 be a5 78 a7 86 b7 92 c9 76 dc 7e d3 74 3e
76 97 4d 68 4a 51 61 7a 75 6f 54 6a 62 49 55 42
f1 bf 12 10 15 29 d4 f6 75 ff 00 01 f1 f2 11 96
bd 20 e2 61 89 95 b8 ed 7e 79 aa 19 c8 26 17 79
36 e5 e5 e6 6f 89 69 f5 9f b1 a1 77 ec e7 c5 29
46 0d 33
BARCODENET-34163, BARCODJAVA-33507 Can’t recognize Aztec code from the JPG image
Code sample
String filename =
"test1_orig.jpg"
;
BarCodeReader reader = new BarCodeReader(filename, BarCodeReadType.Aztec);
reader.read();
Result
Result
Aztec: IwQAANtYAAJDAP8xAHwAQgBBAPtLADAAORr3NgA4Ar00KjHaCho19y4zIm8eUABSAP5FAFoAWQBE/w5OAFQAIPcATQAuCu9TAFQPvVeOUu8aWg5Xe058UrUWSe9aTF5Je9pBSt1CErsOQQFPBvcYAUsWbk5VAEz2g569T2ZM1lcBjr5LXzEOLjfgRtcPLRrtMgAy1xuHr1dba1I2Tt8zY1R7mlkG3lQ/zQND7x5SBkzfAExfMnvuMA7eRLY07QpCSnBe5w8bQUVa2DAD7zWuMg83uDIadD8tESveMCot9gMOg0fbwUH7d0u6BpODVGOHf0FOH9gnBaFzBmO8OLtaDzL4BzKtP5bzGrw59zAfSyMS0LpF8b9Ni0q75zh+3kMONQhzqDbS7DcANBNYoR8eZ4o1Qw2GDzLxO0+7fAA0YkvH8685JixvPzYAsTYX8UQAINgP8BP0DzQfpzMAsHz3cFNoUsCru05IANNr7k8m0wZCpkdBF0uXLSM3OdqXN0F9AzheQzjwvjbdjzJWQ+4DOAAwSwzLs0d8aydmA05C2TO+OQsyW3eCSSSSSoD/AA==f
BARCODENET-34162, BARCODJAVA-33506 Can’t recognize Aztec code from the JPG image
Code sample
String filename =
"test_photo.jpg"
;
BarCodeReader reader = new BarCodeReader(filename, BarCodeReadType.Aztec);
reader.read();
result:
Aztec: abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
BARCODENET-33843 Can’t recognize all DataMatrix/Code128 codes from a tif file
Improved recognition.
Now we can recognize all DataMatrix barcode (without MaxQuality). Sample code:
BarCodeReader reader =
new
BarCodeReader(
"DOC00000010.tif"
, BarCodeReadType.DataMatrix);
while
(reader.read())
System
.out.println(reader.getCodeText());}
Result:
1 - Code Text: AZ000000014946 - Type: DataMatrix
2 - Code Text: AZ000000014932 - Type: DataMatrix
3 - Code Text: AZ000000014941 - Type: DataMatrix
4 - Code Text: AZ000000014944 - Type: DataMatrix
5 - Code Text: AZ000000014933 - Type: DataMatrix
6 - Code Text: AZ000000014934 - Type: DataMatrix
7 - Code Text: AZ000000014939 - Type: DataMatrix
8 - Code Text: AZ000000014940 - Type: DataMatrix
9 - Code Text: AZ000000014947 - Type: DataMatrix
10 - Code Text: AZ000000014936 - Type: DataMatrix
11 - Code Text: AZ000000014948 - Type: DataMatrix
12 - Code Text: AZ000000014942 - Type: DataMatrix
13 - Code Text: AZ000000014938 - Type: DataMatrix
14 - Code Text: AZ000000014935 - Type: DataMatrix
15 - Code Text: AZ000000014937 - Type: DataMatrix
16 - Code Text: AZ000000014945 - Type: DataMatrix
17 - Code Text: AZ000000014931 - Type: DataMatrix
18 - Code Text: AZ000000014930 - Type: DataMatrix
19 - Code Text: AZ000000014943 - Type: DataMatrix
BARCODENET-33250 Implement a BarCodeReader constructor that could accept a list of Rectangles
Code sample
String filename =
"Three_Barcodes.png"
;
BufferedImage img = null;
img = ImageIO.read(new File(filename));
Rectangle\[\] areas = new Rectangle[3];
areas[0] = new Rectangle(50, 50, 300, 300);
areas[1] = new Rectangle(400, 40, 350, 350);
areas[2] = new Rectangle(40, 500, 700, 150);
BarCodeReader reader = new BarCodeReader(img, areas, BarCodeReadType.AllSupportedTypes);
reader.read();
Result:
Interleaved2of5: 01234321
DataMatrix: Pegasus Imaging - BarcodeXpress 5 - 1D and 2D barcode reader/writer
OneCode: 44123123456123456789