diff options
author | dsiddharth2 <dsiddharth2@gmail.com> | 2018-04-28 22:00:44 +0530 |
---|---|---|
committer | dsiddharth2 <dsiddharth2@gmail.com> | 2018-04-28 22:00:44 +0530 |
commit | 0a0699f92da96122f14a03967092f2b03edfa85c (patch) | |
tree | 50959d2fb862baf4e6660fb43b6f08976add9560 | |
parent | 3f95565d2e2a54df7250eb7ae3118dc2e585cfc2 (diff) | |
parent | 7bf66280877860aed2f56119b463599f868637c5 (diff) | |
download | php-zxing-0a0699f92da96122f14a03967092f2b03edfa85c.zip php-zxing-0a0699f92da96122f14a03967092f2b03edfa85c.tar.gz php-zxing-0a0699f92da96122f14a03967092f2b03edfa85c.tar.bz2 |
Fixed the 1.0.1 version
-rw-r--r-- | README.md | 82 | ||||
-rw-r--r-- | src/PHPZxing/PHPZxingBase.php | 4 | ||||
-rw-r--r-- | src/PHPZxing/PHPZxingDecoder.php | 16 | ||||
-rw-r--r-- | src/PHPZxing/PHPZxingInterface.php | 39 | ||||
-rw-r--r-- | src/PHPZxing/ZxingBarNotFound.php | 12 | ||||
-rw-r--r-- | src/PHPZxing/ZxingImage.php | 12 | ||||
-rw-r--r-- | src/examples/example.php | 225 | ||||
-rw-r--r-- | src/images/no_bar_code_found.jpeg | bin | 0 -> 8571 bytes |
8 files changed, 325 insertions, 65 deletions
@@ -9,7 +9,7 @@ Install using composer ```json { "require": { - "dsiddharth2/php-zxing": "1.0.0" + "dsiddharth2/php-zxing": "1.0.1" } } ``` @@ -19,6 +19,10 @@ Note * Only Decoder is programmed right now. Needs programming of Encoder. * The Default location of java that is configured is /usr/bin/java +Changes in version 1.0.1 +-------------------- +* Added a isFound function that will tell if the bar code is found. +* If the image has one bar code detected, then it returns the object instead of array of a single object. Basic Usage ---------- @@ -26,14 +30,44 @@ Basic Usage use PHPZxing\PHPZxingDecoder; $decoder = new PHPZxingDecoder(); -$decodedData = current($decoder->decode('../images/Code128Barcode.jpg')); -$decodedData->getImageValue(); -$decodedData->getFormat(); -$decodedData->getType(); +$decodedData = $decoder->decode('../images/Code128Barcode.jpg'); +if($data->isFound()) { + $data->getImageValue(); + $data->getFormat(); + $data->getType(); +} ``` The Decoded data is an Array of Objects of PHPZxing\ZxingImage if the bar code is found. If not found then it is an array of Objects PHPZxing\ZxingBarNotFound. +Checking for existence of Barcode +---------- +The Existance of bar code can be found using the functoin isFound() + +```php +use PHPZxing\PHPZxingDecoder; + +$decoder = new PHPZxingDecoder(); +$data = $decoder->decode('../images/Code128Barcode.jpg'); +if($data->isFound()) { + $data->getImageValue(); + $data->getFormat(); + $data->getType(); +} +``` + +You can also check using the instanceof object, +```php +use PHPZxing\PHPZxingDecoder; + +$decoder = new PHPZxingDecoder(); +$data = $decoder->decode('../images/Code128Barcode.jpg'); +if($data instanceof PHPZxing\ZxingImage) { + $data->getImageValue(); + $data->getFormat(); + $data->getType(); +} +``` The Public methods that we can use in PHPZxing\ZxingImage are, | Method Name | Function | @@ -58,13 +92,17 @@ Setting the configurations use PHPZxing\PHPZxingDecoder; $config = array( - 'try_harder' => true, // Non mobile mode - 'multiple_bar_codes' => true, // If the image contains muliple bar codes - 'crop' => '100,200,300,300', // If you want to crop image in pixels + 'try_harder' => true, ); $decoder = new PHPZxingDecoder($config); -$decodedData = $decoder->decode('../images/'); // Reads images in complete directory -print_r($decodedData); +$decodedArray = $decoder->decode('../images'); +if(is_array($decodedArray)){ + foreach ($decodedArray as $data) { + if($data->isFound()) { + print_r($data); + } + } +} ``` You can also use it with configurations. The Decoder has 3 configurations, @@ -84,15 +122,35 @@ You can pass array of images too, use PHPZxing\PHPZxingDecoder; $decoder = new PHPZxingDecoder(); -// Images can be sent as an array $imageArrays = array( '../images/Code128Barcode.jpg', '../images/Code39Barcode.jpg' ); -$decodedData = $decoder->decode($imageArrays); +$decodedArray = $decoder->decode($imageArrays); +foreach ($decodedArray as $data) { + if($data instanceof PHPZxing\ZxingImage) { + print_r($data); + } else { + echo "Bar Code cannot be read"; + } +} +``` + +Reading multiple bar codes, + +```php +use PHPZxing\PHPZxingDecoder; + +$config = array( + 'try_harder' => true, + 'multiple_bar_codes' => true +); +$decoder = new PHPZxingDecoder($config); +$decodedData = $decoder->decode('../images/multiple_bar_codes.jpg'); print_r($decodedData); ``` + Set Java Path ---------- If your java PATH is not set properly, the decoder will not work. You need to set path of java variable. diff --git a/src/PHPZxing/PHPZxingBase.php b/src/PHPZxing/PHPZxingBase.php index 5d3cc79..fbad3fe 100644 --- a/src/PHPZxing/PHPZxingBase.php +++ b/src/PHPZxing/PHPZxingBase.php @@ -8,8 +8,8 @@ authors: - Siddharth Deshpande (dsiddharth2@gmail.com) ... * PHPZxing -* Version 1.0 -* Copyright (c) 2017 Siddharth Deshpande +* Version 1.0.1 +* Copyright (c) 2018 Siddharth Deshpande * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation diff --git a/src/PHPZxing/PHPZxingDecoder.php b/src/PHPZxing/PHPZxingDecoder.php index 7ab7804..42176da 100644 --- a/src/PHPZxing/PHPZxingDecoder.php +++ b/src/PHPZxing/PHPZxingDecoder.php @@ -15,8 +15,8 @@ Provides: PHPZxingDecoder - ... * PHPZxingDecoder -* Version 1.0 -* Copyright (c) 2017 Siddharth Deshpande +* Version 1.0.1 +* Copyright (c) 2018 Siddharth Deshpande * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation @@ -79,7 +79,11 @@ class PHPZxingDecoder extends PHPZxingBase { if(isset($config['crop']) && array_key_exists('crop', $config)) { $this->crop = strval($config['crop']); - } + } + + if(isset($config['returnAs']) && array_key_exists('returnAs', $config)) { + $this->returnAs = strval($config['returnAs']); + } } private function basePrepare() { @@ -170,6 +174,7 @@ class PHPZxingDecoder extends PHPZxingBase { $image[] = new ZxingImage($imagePath, $imageValue, $format, $type); } else if(preg_match('/No barcode found/', $singleLine)) { + $exploded = explode(" ", $singleLine); $imagePath = array_shift($exploded); $image[] = new ZxingBarNotFound($imagePath, 101, "No barcode found"); @@ -230,6 +235,11 @@ class PHPZxingDecoder extends PHPZxingBase { throw new \Exception("Is the java PATH set correctly ? Current Path set is : " . $this->getJavaPath()); } + // If the image is single then return the actual image + if(count($image) == 1) { + return current($image); + } + return $image; } catch(\Exception $e) { echo $e->getMessage(); diff --git a/src/PHPZxing/PHPZxingInterface.php b/src/PHPZxing/PHPZxingInterface.php new file mode 100644 index 0000000..d9568f8 --- /dev/null +++ b/src/PHPZxing/PHPZxingInterface.php @@ -0,0 +1,39 @@ +<?php +/* +Descrition : PHPZxingInterface interface that will have all the interface methods stored + +license: MIT-style + +authors: +- Siddharth Deshpande (dsiddharth2@gmail.com) +... +* PHPZxing +* Version 1.0.1 +* Copyright (c) 2018 Siddharth Deshpande +* +* Permission is hereby granted, free of charge, to any person +* obtaining a copy of this software and associated documentation +* files (the "Software"), to deal in the Software without +* restriction, including without limitation the rights to use, +* copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following +* conditions: +* +* The above copyright notice and this permission notice shall be +* included in all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +* OTHER DEALINGS IN THE SOFTWARE. +*/ +namespace PHPZxing; + +interface PHPZxingInterface { + public function isFound(); +}
\ No newline at end of file diff --git a/src/PHPZxing/ZxingBarNotFound.php b/src/PHPZxing/ZxingBarNotFound.php index 608d743..4e7ddb7 100644 --- a/src/PHPZxing/ZxingBarNotFound.php +++ b/src/PHPZxing/ZxingBarNotFound.php @@ -9,8 +9,8 @@ authors: - Siddharth Deshpande (dsiddharth2@gmail.com) ... * PHPZxing -* Version 1.0 -* Copyright (c) 2017 Siddharth Deshpande +* Version 1.0.1 +* Copyright (c) 2018 Siddharth Deshpande * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation @@ -36,7 +36,9 @@ authors: namespace PHPZxing; -class ZxingBarNotFound { +use PHPZxing\PHPZxingInterface; + +class ZxingBarNotFound implements PHPZxingInterface { // Path of the image decoded private $imagePath = null; @@ -63,4 +65,8 @@ class ZxingBarNotFound { public function getErrorMessage() { return $this->message; } + + public function isFound() { + return false; + } }
\ No newline at end of file diff --git a/src/PHPZxing/ZxingImage.php b/src/PHPZxing/ZxingImage.php index d36f560..d49131b 100644 --- a/src/PHPZxing/ZxingImage.php +++ b/src/PHPZxing/ZxingImage.php @@ -8,8 +8,8 @@ authors: - Siddharth Deshpande (dsiddharth2@gmail.com) ... * PHPZxing -* Version 1.0 -* Copyright (c) 2017 Siddharth Deshpande +* Version 1.0.1 +* Copyright (c) 2018 Siddharth Deshpande * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation @@ -34,7 +34,9 @@ authors: */ namespace PHPZxing; -class ZxingImage { +use PHPZxing\PHPZxingInterface; + +class ZxingImage implements PHPZxingInterface { // Decoded Value from source private $imageValue = null; @@ -54,6 +56,10 @@ class ZxingImage { $this->imagePath = $imagePath; } + public function isFound() { + return true; + } + public function getImageValue() { return $this->imageValue; } diff --git a/src/examples/example.php b/src/examples/example.php index 5c979cb..13d2e8c 100644 --- a/src/examples/example.php +++ b/src/examples/example.php @@ -1,42 +1,183 @@ -<?php - error_reporting(E_ALL); - ini_set('display_errors', 1); - - require dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . "PHPZxing" . DIRECTORY_SEPARATOR . "PHPZxingBase.php"; - require dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . "PHPZxing" . DIRECTORY_SEPARATOR . "PHPZxingDecoder.php"; - require dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . "PHPZxing" . DIRECTORY_SEPARATOR . "ZxingImage.php"; - require dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . "PHPZxing" . DIRECTORY_SEPARATOR . "ZxingBarNotFound.php"; - - use PHPZxing\PHPZxingDecoder; - - $decoder = new PHPZxingDecoder(); - $decodedData = current($decoder->decode('../images/Code128Barcode.jpg')); - $decodedData->getImageValue(); - $decodedData->getFormat(); - $decodedData->getType(); - - $config = array( - 'try_harder' => true, - 'multiple_bar_codes' => true, - 'crop' => '100,200,300,300', - ); - $decoder = new PHPZxingDecoder($config); - $decodedData = $decoder->decode('../images/'); - print_r($decodedData); - - $decoder = new PHPZxingDecoder(); - $imageArrays = array( - '../images/Code128Barcode.jpg', - '../images/Code39Barcode.jpg' - ); - $decodedData = $decoder->decode($imageArrays); - print_r($decodedData); - - $config = array( - 'try_harder' => true, - 'multiple_bar_codes' => true - ); - $decoder = new PHPZxingDecoder($config); - $decodedData = $decoder->decode('../images/multiple_bar_codes.jpg'); - print_r($decodedData); -?>
\ No newline at end of file +PHPZxing - Wrapper for Zxing Java Library +=========================================== +PHPZxing is a small php wrapper that uses the Zxing library to Create and read Barcodes. +Under the hood it still uses the [Zxing library](https://github.com/zxing/zxing) to encode and decode data. + +Install using composer +-------------------- + +```json +{ + "require": { + "dsiddharth2/php-zxing": "1.0.1" + } +} +``` + +Note +-------------------- +* Only Decoder is programmed right now. Needs programming of Encoder. +* The Default location of java that is configured is /usr/bin/java + +Changes in version 1.0.1 +-------------------- +* Added a isFound function that will tell if the bar code is found. +* If the image has one bar code detected, then it returns the object instead of array of a single object. + +Basic Usage +---------- +```php +use PHPZxing\PHPZxingDecoder; + +$decoder = new PHPZxingDecoder(); +$decodedData = $decoder->decode('../images/Code128Barcode.jpg'); +if($data->isFound()) { + $data->getImageValue(); + $data->getFormat(); + $data->getType(); +} +``` + +The Decoded data is an Array of Objects of PHPZxing\ZxingImage if the bar code is found. If not found then it is an array of Objects PHPZxing\ZxingBarNotFound. + +Checking for existence of Barcode +---------- +The Existance of bar code can be found using the functoin isFound() + +```php +use PHPZxing\PHPZxingDecoder; + +$decoder = new PHPZxingDecoder(); +$data = $decoder->decode('../images/Code128Barcode.jpg'); +if($data->isFound()) { + $data->getImageValue(); + $data->getFormat(); + $data->getType(); +} +``` + +You can also check using the instanceof object, +```php +use PHPZxing\PHPZxingDecoder; + +$decoder = new PHPZxingDecoder(); +$data = $decoder->decode('../images/Code128Barcode.jpg'); +if($data instanceof PHPZxing\ZxingImage) { + $data->getImageValue(); + $data->getFormat(); + $data->getType(); +} +``` +The Public methods that we can use in PHPZxing\ZxingImage are, + +| Method Name | Function | +| ------------- |--------------------------------------------------------------| +| getImageValue | Get the value decoded in the image passed | +| getFormat | Get the format of the image that is encoded, example : CODE_39 | +| getType | Get the type of the image decoded, example : URL, TEXT etc | +| getImagePath | Get Path of the image | + +The Public methods that we can use in PHPZxing\ZxingImage are, + +| Method Name | Function | +| ------------- |--------------------------------------------------------------| +| getImageErrorCode | Get the error code for the image not found | +| getErrorMessage | Error Message | +| getImagePath | Get Path of the image | + + +Setting the configurations +---------- +```php +use PHPZxing\PHPZxingDecoder; + +$config = array( + 'try_harder' => true, +); +$decoder = new PHPZxingDecoder($config); +$decodedArray = $decoder->decode('../images'); +if(is_array($decodedArray)){ + foreach ($decodedArray as $data) { + if($data->isFound()) { + print_r($data); + } + } +} +``` + +You can also use it with configurations. The Decoder has 3 configurations, + +| Config Name | Function | +| ------------- |--------------------------------------------------------------| +| try_harder | If the image has bar/Qr code at unknown locations, then use this non mobile mode. | +| multiple_bar_codes | If the image has multiple bar codes you want to read. | +| crop | Crop the image and it will read only the cropped portion | + +More Examples +---------- + +You can pass array of images too, + +```php +use PHPZxing\PHPZxingDecoder; + +$decoder = new PHPZxingDecoder(); +$imageArrays = array( + '../images/Code128Barcode.jpg', + '../images/Code39Barcode.jpg' +); +$decodedArray = $decoder->decode($imageArrays); +foreach ($decodedArray as $data) { + if($data instanceof PHPZxing\ZxingImage) { + print_r($data); + } else { + echo "Bar Code cannot be read"; + } +} +``` + +Reading multiple bar codes, + +```php +use PHPZxing\PHPZxingDecoder; + +$config = array( + 'try_harder' => true, + 'multiple_bar_codes' => true +); +$decoder = new PHPZxingDecoder($config); +$decodedData = $decoder->decode('../images/multiple_bar_codes.jpg'); +print_r($decodedData); +``` + + +Set Java Path +---------- +If your java PATH is not set properly, the decoder will not work. You need to set path of java variable. + +```php +use PHPZxing\PHPZxingDecoder; + +$decoder = new PHPZxingDecoder(); +$decoder->setJavaPath('/your/path/to/java'); +$decodedData = $decoder->decode('../images/Code128Barcode.jpg'); +print_r($decodedData); +``` + +Where is my java located ? +---------- +If you do not know the path to java, then you can use the following on *nix enviromnents +``` +$ which java +``` + +On Windows read the follwoing stackoverflow [Link](https://stackoverflow.com/questions/304319/is-there-an-equivalent-of-which-on-the-windows-command-line) + +## Acknowledgments + +* [Zxing library](https://github.com/zxing/zxing) + +Contibution +---------- +Please Contribute or suggest changes. + diff --git a/src/images/no_bar_code_found.jpeg b/src/images/no_bar_code_found.jpeg Binary files differnew file mode 100644 index 0000000..ea08de6 --- /dev/null +++ b/src/images/no_bar_code_found.jpeg |