‪Aspose.Barcode for PHP via Java  22.4
‪Aspose.Barcode for PHP via Java Generation and Recognition API docs
BarCodeReader Class Reference

Inherits BaseJavaClass.

Public Member Functions

 __construct (?string $image, $rectangles, $decodeTypes)
 
 containsAny (... $decodeTypes)
 
 getTimeout ()
 
 setTimeout (int $value)
 
 getChecksumValidation ()
 
 setChecksumValidation (int $value)
 
 getStripFNC ()
 
 setStripFNC (bool $value)
 
 getCustomerInformationInterpretingType ()
 
 setCustomerInformationInterpretingType (int $value)
 
 abort ()
 
 getFoundBarCodes ()
 
 getFoundCount ()
 
 getDetectEncoding ()
 
 setDetectEncoding (bool $value)
 
 setBarCodeImage (string $resource, ?Rectangle ... $areas)
 
 setBarCodeReadType (int ... $types)
 
 getBarCodeDecodeType ()
 
 exportToXml (string $xmlFile)
 
 getJavaClass ()
 
 getJavaClassName ()
 
 isNull ()
 
 printJavaClassName ()
 

Static Public Member Functions

static construct ($javaClass)
 
static importFromXml ($resource)
 

Protected Member Functions

 init ()
 
 setJavaClass ($javaClass)
 

Detailed Description

BarCodeReader encapsulates an image which may contain one or several barcodes, it then can perform ReadBarCodes operation to detect barcodes.

This sample shows how to detect Code39 and Code128 barcodes.

foreach($reader->readBarCodes() as $result)
{
print("BarCode Type: ".$result->getCodeTypeName());
print("BarCode CodeText: ".$result->getCodeText());
}

Constructor & Destructor Documentation

◆ __construct()

BarCodeReader::__construct ( ?string  $image,
  $rectangles,
  $decodeTypes 
)

BarCodeReader constructor. Initializes a new instance of the BarCodeReader

Parameters
string$resource‪image encoded as base64 string or path to image resource located in the file system or via http
int | array | null$rectangles‪array of object by type Rectangle
int | array | null$decodeTypes‪array of decode types
Exceptions
BarcodeException

Member Function Documentation

◆ abort()

BarCodeReader::abort ( )

◆ construct()

static BarCodeReader::construct (   $javaClass)
static

◆ containsAny()

BarCodeReader::containsAny (   $decodeTypes)

Determines whether any of the given decode types is included into

Parameters
$decodeTypes‪Types to verify.
Returns
‪bool Value is a true if any types are included into.

◆ exportToXml()

BarCodeReader::exportToXml ( string  $xmlFile)

Exports BarCode properties to the xml-file specified

Parameters
string$xmlFile‪The path to xml file
Returns
‪bool Whether or not export completed successfully. Returns True in case of success; False Otherwise

◆ getBarCodeDecodeType()

BarCodeReader::getBarCodeDecodeType ( )

◆ getChecksumValidation()

BarCodeReader::getChecksumValidation ( )

Enable checksum validation during recognition for 1D barcodes. Default is treated as Yes for symbologies which must contain checksum, as No where checksum only possible. Checksum never used: Codabar Checksum is possible: Code39 Standard/Extended, Standard2of5, Interleaved2of5, Matrix2of5, ItalianPost25, DeutschePostIdentcode, DeutschePostLeitcode, VIN Checksum always used: Rest symbologies This sample shows influence of ChecksumValidation on recognition quality and results

$generator = new BarcodeGenerator(EncodeTypes::EAN_13, "1234567890128");
$generator->save("test.png");
$reader = new BarCodeReader("test.png", DecodeType::EAN_13);
//checksum disabled
$reader->setChecksumValidation(ChecksumValidation::OFF);
foreach($reader->readBarCodes() as $result)
{
print("BarCode CodeText: ".$result->getCodeText());
print("BarCode Value: ".$result->getExtended()->getOneD()->getValue());
print("BarCode Checksum: ".$result->getExtended()->getOneD()->getCheckSum());
}
$reader = new BarCodeReader("test.png", DecodeType::EAN_13);
//checksum enabled
$reader->setChecksumValidation(ChecksumValidation::ON);
foreach($reader->readBarCodes() as $result)
{
print("BarCode CodeText: ".$result->getCodeText());
print("BarCode Value: ".$result->getExtended()->getOneD()->getValue());
print("BarCode Checksum: ".$result->getExtended()->getOneD()->getCheckSum());
}

The checksum validation flag.

◆ getCustomerInformationInterpretingType()

BarCodeReader::getCustomerInformationInterpretingType ( )

Gets the Interpreting Type for the Customer Information of AustralianPost BarCode.Default is CustomerInformationInterpretingType::OTHER.

◆ getDetectEncoding()

BarCodeReader::getDetectEncoding ( )

Reads BarCodeResult from the image.

This sample shows how to read barcodes with BarCodeReader
foreach($reader->readBarCodes() as $result)
print("BarCode CodeText: ".$result->getCodeText());
$reader->readBarCodes();
for($i = 0; $reader->getFoundCount() > $i; ++$i)
print("BarCode CodeText: ".$reader->getFoundBarCodes()[i]->getCodeText());
@return array of recognized {@code BarCodeResult}s on the image. If nothing is recognized, zero array is returned.
/
public function readBarCodes(): array
{
try
{
$this->recognizedResults = array();
$javaReadBarcodes = java_values($this->getJavaClass()->readBarCodes());
for ($i = 0; $i < sizeof($javaReadBarcodes); $i++)
{
$this->recognizedResults[$i] = new BarCodeResult($javaReadBarcodes[$i]);
}
return $this->recognizedResults;
}
catch (Exception $e)
{
if (strpos($e->getMessage(), "RecognitionAbortedException"))
{
throw new RecognitionAbortedException($e->getMessage(), null);
}
throw $e;
}
}
/**
* QualitySettings allows to configure recognition quality and speed manually.
* You can quickly set up QualitySettings by embedded presets: HighPerformance, NormalQuality,
* HighQuality, MaxBarCodes or you can manually configure separate options.
* Default value of QualitySettings is NormalQuality.
* @code
* This sample shows how to use QualitySettings with BarCodeReader
*
* $reader = new BarCodeReader("test.png");
* //set high performance mode
* $reader->setQualitySettings(QualitySettings::getHighPerformance());
* foreach($reader->readBarCodes() as $result)
* print("BarCode CodeText: ".$result->getCodeText());
* $reader = new BarCodeReader("test.png", DecodeType::CODE_39_STANDARD, DecodeType::CODE_128);
* //normal quality mode is set by default
* foreach($reader->readBarCodes() as $result)
* print("BarCode CodeText: ".$result->getCodeText());
* $reader = new BarCodeReader("test.png", DecodeType::CODE_39_STANDARD, DecodeType::CODE_128);
* //set high performance mode
* $reader->setQualitySettings(QualitySettings::getHighPerformance());
* //set separate options
* $reader->getQualitySettings()->setAllowMedianSmoothing(true);
* $reader->getQualitySettings()->setMedianSmoothingWindowSize(5);
* foreach($reader->readBarCodes() as $result)
* print("BarCode CodeText: ".$result->getCodeText());
*
* @return QualitySettings to configure recognition quality and speed.
* @throws BarcodeException
*/
public final function getQualitySettings(): QualitySettings
{
try
{
return $this->qualitySettings;
}
catch (Exception $ex)
{
throw new BarcodeException($ex->getMessage(), __FILE__, __LINE__);
}
}
/**
* QualitySettings allows to configure recognition quality and speed manually.
* You can quickly set up QualitySettings by embedded presets: HighPerformance, NormalQuality,
* HighQuality, MaxBarCodes or you can manually configure separate options.
* Default value of QualitySettings is NormalQuality.
* @code
* This sample shows how to use QualitySettings with BarCodeReader
*
* $reader = new BarCodeReader("test.png");
* //set high performance mode
* $reader->setQualitySettings(QualitySettings::getHighPerformance());
* foreach($reader->readBarCodes() as $result)
* print("BarCode CodeText: ".$result->getCodeText());
* $reader = new BarCodeReader("test.png", DecodeType::CODE_39_STANDARD, DecodeType::CODE_128);
* //normal quality mode is set by default
* foreach($reader->readBarCodes() as $result)
* print("BarCode CodeText: ".$result->getCodeText());
* $reader = new BarCodeReader("test.png", DecodeType::CODE_39_STANDARD, DecodeType::CODE_128);
* //set high performance mode
* $reader->setQualitySettings(QualitySettings::getHighPerformance());
* //set separate options
* $reader->getQualitySettings()->setAllowMedianSmoothing(true);
* $reader->getQualitySettings()->setMedianSmoothingWindowSize(5);
* foreach($reader->readBarCodes() as $result)
* print("BarCode CodeText: ".$result->getCodeText());
*
* @param QualitySettings $value QualitySettings to configure recognition quality and speed.
* @throws BarcodeException
*/
public function setQualitySettings(QualitySettings $value): void
{
try
{
$this->getJavaClass()->setQualitySettings($value->getJavaClass());
//$this->qualitySettings = new QualitySettings($this->getJavaClass()->getQualitySettings());
}
catch (Exception $ex)
{
throw new BarcodeException($ex->getMessage(), __FILE__, __LINE__);
}
}
/**
* The main BarCode decoding parameters. Contains parameters which make influence on recognized data.
* @return BarcodeSettings BarCode decoding parameters
*/
public function getBarcodeSettings(): BarcodeSettings
{
return $this->barcodeSettings;
}
/**
* A flag which force engine to detect codetext encoding for Unicode codesets.
*
* This sample shows how to detect text encoding on the fly if DetectEncoding is enabled
* @code
* $image = "image.png";
* $generator = new BarcodeGenerator(EncodeTypes::QR, "Слово"))
* $generator->getParameters().getBarcode()->getQR()->setCodeTextEncoding("UTF-8");
* $generator->save($image, BarCodeImageFormat.getPng());
* //detects encoding for Unicode codesets is enabled
* $reader = new BarCodeReader($image, DecodeType::QR);
* $reader->setDetectEncoding(true);
* foreach($reader->readBarCodes() as $result)
* print("BarCode CodeText: ".$result->getCodeText());
* //detect encoding is disabled
* $reader = new BarCodeReader($image, DecodeType::QR);
* $reader->setDetectEncoding(false);
* foreach($reader->readBarCodes() as $result)
* print("BarCode CodeText: ".$result->getCodeText());
*

◆ getFoundBarCodes()

BarCodeReader::getFoundBarCodes ( )

Gets recognized BarCodeResult array

This sample shows how to read barcodes with BarCodeReader

$reader->readBarCodes();
for($i = 0; $reader->getFoundCount() > $i; ++$i)
{
print("BarCode CodeText: ". $reader->getFoundBarCodes()[$i]->getCodeText());
}

Value: The recognized BarCodeResult array

◆ getFoundCount()

BarCodeReader::getFoundCount ( )

Gets recognized barcodes count

This sample shows how to read barcodes with BarCodeReader

$reader->readBarCodes();
for($i = 0; $reader->getFoundCount() > $i; ++$i)
print("BarCode CodeText: ".$reader->getFoundBarCodes()[i]->getCodeText());

Value: The recognized barcodes count

◆ getJavaClass()

BaseJavaClass::getJavaClass ( )
inherited

◆ getJavaClassName()

BaseJavaClass::getJavaClassName ( )
inherited

◆ getStripFNC()

BarCodeReader::getStripFNC ( )

Strip FNC1, FNC2, FNC3 characters from codetext. Default value is false.

This sample shows how to strip FNC characters

$generator = new BarcodeGenerator(EncodeTypes::GS1Code128, "(02)04006664241007(37)1(400)7019590754");
$generator->save("test.png");
$reader = new BarCodeReader("test.png", DecodeType::CODE_128);
//StripFNC disabled
$reader->setStripFNC(false);
foreach($reader->readBarCodes() as $result)
{
print("BarCode CodeText: ".$result->getCodeText());
}
$reader = new BarCodeReader("test.png", DecodeType::CODE_128);
//StripFNC enabled
$reader->setStripFNC(true);
foreach($reader->readBarCodes() as $result)
{
print("BarCode CodeText: ".$result->getCodeText());
}

◆ getTimeout()

BarCodeReader::getTimeout ( )

Gets the timeout of recognition process in milliseconds.

$reader = new BarCodeReader("test.png");
$reader->setTimeout(5000);
foreach($reader->readBarCodes() as $result)
print("BarCode CodeText: ".$result->getCodeText());
Returns
‪timeout.

◆ importFromXml()

static BarCodeReader::importFromXml (   $resource)
static

Import BarCode properties from xml file

Parameters
string$resource‪The name of the xml file or path to http resource
Returns
BarCodeReader
Exceptions
BarcodeException

◆ init()

BarCodeReader::init ( )
protected

Reimplemented from BaseJavaClass.

◆ isNull()

BaseJavaClass::isNull ( )
inherited

◆ printJavaClassName()

BaseJavaClass::printJavaClassName ( )
inherited

◆ setBarCodeImage()

BarCodeReader::setBarCodeImage ( string  $resource,
?Rectangle ...  $areas 
)
final

Sets bitmap image and areas for recognition. Must be called before ReadBarCodes() method.

This sample shows how to detect Code39 and Code128 barcodes.

$bmp = "test.png";
$reader = new BarCodeReader();
$reader->setBarCodeReadType(DecodeType::CODE_39_STANDARD, DecodeType::CODE_128);
$width, $height;
list($width, $height) = getimagesize('path_to_image')
$reader->setBarCodeImage($bmp, new Rectangle[] { new Rectangle(0, 0, $width, $height) });
foreach($reader->readBarCodes() as $result)
{
print("BarCode Type: ".$result->getCodeTypeName());
print("BarCode CodeText: ".$result->getCodeText());
}
Parameters
string$resource‪image encoded as base64 string or path to image resource located in the file system or via http
Rectangle | null$areas‪areas list for recognition
Exceptions
BarcodeException

◆ setBarCodeReadType()

BarCodeReader::setBarCodeReadType ( int ...  $types)

Sets SingleDecodeType type array for recognition. Must be called before readBarCodes() method.

This sample shows how to detect Code39 and Code128 barcodes.

$reader = new BarCodeReader();
$reader->setBarCodeReadType(DecodeType::CODE_39_STANDARD, DecodeType::CODE_128);
$reader->setBarCodeImage("test.png");
foreach($reader->readBarCodes() as $result)
{
print("BarCode Type: ".$result->getCodeTypeName());
print("BarCode CodeText: ".$result->getCodeText());
}
Parameters
array$types‪The SingleDecodeType type array to read.

◆ setChecksumValidation()

BarCodeReader::setChecksumValidation ( int  $value)

Enable checksum validation during recognition for 1D barcodes. Default is treated as Yes for symbologies which must contain checksum, as No where checksum only possible. Checksum never used: Codabar Checksum is possible: Code39 Standard/Extended, Standard2of5, Interleaved2of5, Matrix2of5, ItalianPost25, DeutschePostIdentcode, DeutschePostLeitcode, VIN Checksum always used: Rest symbologies

This sample shows influence of ChecksumValidation on recognition quality and results

$generator = new BarcodeGenerator(EncodeTypes::EAN_13, "1234567890128");
$generator->save("test.png");
$reader = new BarCodeReader("test.png", DecodeType::EAN_13);
//checksum disabled
$reader->setChecksumValidation(ChecksumValidation::OFF);
foreach($reader->readBarCodes() as $result)
{
print("BarCode CodeText: ".$result->getCodeText());
print("BarCode Value: ".$result->getExtended()->getOneD()->getValue());
print("BarCode Checksum: ".$result->getExtended()->getOneD()->getCheckSum());
}
$reader = new BarCodeReader("test.png", DecodeType::EAN_13);
//checksum enabled
$reader->setChecksumValidation(ChecksumValidation::ON);
foreach($reader->readBarCodes() as $result)
{
print("BarCode CodeText: ".$result->getCodeText());
print("BarCode Value: ".$result->getExtended()->getOneD()->getValue());
print("BarCode Checksum: ".$result->getExtended()->getOneD()->getCheckSum());
}

The checksum validation flag.

◆ setCustomerInformationInterpretingType()

BarCodeReader::setCustomerInformationInterpretingType ( int  $value)

Sets the Interpreting Type for the Customer Information of AustralianPost BarCode.Default is CustomerInformationInterpretingType::OTHER.

◆ setDetectEncoding()

BarCodeReader::setDetectEncoding ( bool  $value)

A flag which force engine to detect codetext encoding for Unicode codesets.

This sample shows how to detect text encoding on the fly if DetectEncoding is enabled

$image = "image.png";
$generator = new BarcodeGenerator(EncodeTypes::QR, "Слово");
$generator->getParameters().getBarcode()->getQR()->setCodeTextEncoding("UTF-8");
$generator->save($image, BarCodeImageFormat.getPng());
//detects encoding for Unicode codesets is enabled
$reader = new BarCodeReader($image, DecodeType::QR);
$reader->setDetectEncoding(true);
foreach($reader->readBarCodes() as $result)
print("BarCode CodeText: ".$result->getCodeText());
//detect encoding is disabled
$reader = new BarCodeReader($image, DecodeType::QR);
$reader->setDetectEncoding(true);
foreach($reader->readBarCodes() as $result)
print("BarCode CodeText: ".$result->getCodeText());

◆ setJavaClass()

BaseJavaClass::setJavaClass (   $javaClass)
protectedinherited

◆ setStripFNC()

BarCodeReader::setStripFNC ( bool  $value)

Strip FNC1, FNC2, FNC3 characters from codetext. Default value is false.

This sample shows how to strip FNC characters

$generator = new BarcodeGenerator(EncodeTypes::GS1Code128, "(02)04006664241007(37)1(400)7019590754");
$generator->save("test.png");
$reader = new BarCodeReader("test.png", DecodeType::CODE_128);
//StripFNC disabled
$reader->setStripFNC(false);
foreach($reader->readBarCodes() as $result)
{
print("BarCode CodeText: ".$result->getCodeText());
}
$reader = new BarCodeReader("test.png", DecodeType::CODE_128);
//StripFNC enabled
$reader->setStripFNC(true);
foreach($reader->readBarCodes() as $result)
{
print("BarCode CodeText: ".$result->getCodeText());
}

◆ setTimeout()

BarCodeReader::setTimeout ( int  $value)

Sets the timeout of recognition process in milliseconds.

$reader = new BarCodeReader("test.png");
$reader->setTimeout(5000);
foreach($reader->readBarCodes() as $result)
print("BarCode CodeText: ".$result->getCodeText());
Parameters
value‪The timeout.