PHP Laravel을 사용하여 서버 측에서 바코드 QR 코드를 읽는 방법

19186 단어 phpqrcodelaravelwebdev
PHP Laravel 프레임워크를 사용하여 웹 바코드 및 QR 코드 판독기를 구축하려는 경우 클라이언트 측 또는 서버 측에서 코드 논리를 구현할 수 있습니다. Dynamsoft는 데스크탑, 모바일 및 웹과 같은 다양한 플랫폼을 위한 다양한 SDK를 제공합니다. 이 기사에서는 Dynamsoft C++ Barcode SDK로 구축된 PHP 확장을 활용하여 서버 측에서 바코드 및 QR 코드를 읽는 방법에 중점을 둡니다. 웹 클라이언트 측 프로그래밍이 귀하의 유형인 경우 https://www.dynamsoft.com/barcode-reader/sdk-javascript/을 참조하십시오.

Windows 및 Linux에 PHP Laravel 설치



PHP 7.4 , ComposerLaravel 을 설치합니다.

  • PHP 7.4

  • 윈도우

    php-7.4.30-nts-Win32-vc15-x64.zip

  • 리눅스

    sudo apt install php7.4
    




  • Composer
  • 윈도우
    달리다 Composer-Setup.exe

  • 리눅스

    php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
    php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
    php composer-setup.php
    php -r "unlink('composer-setup.php');"
    sudo mv composer.phar /usr/local/bin/composer
    




  • 라라벨:

    composer global require laravel/installer
    



  • PHP Laravel을 사용하여 서버 측 바코드 QR 코드 읽기를 구현하는 단계



    다음 단락에서는 서버 측의 이미지 파일에서 바코드 및 QR 코드를 읽을 수 있는 PHP Laravel 프로젝트를 개발하는 과정을 안내합니다.

    1단계: PHP 바코드 QR 코드 리더 확장 프로그램 설치



    사전 빌드된 바이너리 패키지가 없습니다. PHP에서 바코드 및 QR 코드를 읽으려면 Windows 및 Linux의 소스 코드에서 build and install the PHP extension 필요합니다.

    2단계: Laravel 프로젝트 스캐폴드



    확장이 설치되면 새로운 Laravel 프로젝트를 시작할 수 있습니다.

    composer create-project laravel/laravel web-barcode-qrcode-reader
    


    위의 명령은 Laravel의 최신 안정 버전을 설치합니다. 호환성 문제를 피하려면 더 나은 방법은 Laravel 버전 번호를 지정하는 것입니다.

    php artisan --version
    Laravel Framework 8.83.23
    
    composer create-project laravel/laravel:^8.0 web-barcode-qrcode-reader
    


    3단계: 컨트롤러 생성



    Laravelcontrollers은 HTTP 요청을 처리합니다. 업로드된 이미지 파일을 처리하고 바코드 및 QR 코드 디코딩 결과를 반환하는 컨트롤러를 만들 수 있습니다.

    php artisan make:controller ImageUploadController
    


    이 명령은 ImageUploadController.php 디렉토리에 app/Http/Controllers 파일을 생성합니다. 파일을 열어 다음 코드를 추가합니다.

    <?php
    
    namespace App\Http\Controllers;
    
    use Illuminate\Http\Request;
    use Validator;
    
    class ImageUploadController extends Controller
    {
        function __construct() {
            DBRInitLicense("DLS2eyJoYW5kc2hha2VDb2RlIjoiMjAwMDAxLTE2NDk4Mjk3OTI2MzUiLCJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSIsInNlc3Npb25QYXNzd29yZCI6IndTcGR6Vm05WDJrcEQ5YUoifQ==");
            DBRInitRuntimeSettingsWithString("{\"ImageParameter\":{\"Name\":\"BestCoverage\",\"DeblurLevel\":9,\"ExpectedBarcodesCount\":512,\"ScaleDownThreshold\":100000,\"LocalizationModes\":[{\"Mode\":\"LM_CONNECTED_BLOCKS\"},{\"Mode\":\"LM_SCAN_DIRECTLY\"},{\"Mode\":\"LM_STATISTICS\"},{\"Mode\":\"LM_LINES\"},{\"Mode\":\"LM_STATISTICS_MARKS\"}],\"GrayscaleTransformationModes\":[{\"Mode\":\"GTM_ORIGINAL\"},{\"Mode\":\"GTM_INVERTED\"}]}}");       
        }
    
        function page()
        {
         return view('barcode_qr_reader');
        }
    
        function upload(Request $request)
        {
         $validation = Validator::make($request->all(), [
          'BarcodeQrImage' => 'required'
         ]);
         if($validation->passes())
         {
          $image = $request->file('BarcodeQrImage');
          $image->move(public_path('images'), $image->getClientOriginalName());
    
          $resultArray = DecodeBarcodeFile(public_path('images/' . $image->getClientOriginalName()), 0x3FF | 0x2000000 | 0x4000000 | 0x8000000 | 0x10000000); // 1D, PDF417, QRCODE, DataMatrix, Aztec Code
    
          if (is_array($resultArray)) {
            $resultCount = count($resultArray);
            echo "Total count: $resultCount", "\n";
            if ($resultCount > 0) {
                for ($i = 0; $i < $resultCount; $i++) {
                    $result = $resultArray[$i];
                    echo "Barcode format: $result[0], ";
                    echo "value: $result[1], ";
                    echo "raw: ", bin2hex($result[2]), "\n";
                    echo "Localization : ", $result[3], "\n";
                }
            }
            else {
                echo 'No barcode found.', "\n";
            }
          } 
    
          return response()->json([
           'message'   => 'Successfully uploaded the image.'
          ]);
         }
         else
         {
          return response()->json([
           'message'   => $validation->errors()->all()
          ]);
         }
        }
    }
    

    __construct() 방법에서는 Dynamsoft customer portal 에서 얻을 수 있는 유효한 라이센스 키를 설정하여 바코드 SDK 인스턴스를 초기화합니다. 호출DBRInitRuntimeSettingsWithString()은 기본 설정이 대부분의 경우에 적합하므로 선택 사항입니다.

    업로드된 이미지는 public/images 디렉토리에 저장됩니다. DecodeBarcodeFile() 방법은 이미지 파일에서 바코드 및 QR 코드를 읽는 데 사용됩니다.

    다음 단계는 barcode_qr_reader 보기를 만드는 것입니다.

    4단계: 웹 보기 만들기


    barcode_qr_reader.blade.php 디렉토리에 public/resources/views 파일을 생성합니다. 파일에는 양식을 통해 이미지를 업로드하기 위한 HTML5 코드가 포함되어 있습니다.

    <!DOCTYPE html>
    <html>
    
    <head>
        <title>PHP Laravel Barcode QR Reader</title>
        <meta name="_token" content="{{csrf_token()}}" />
    </head>
    
    <body>
        <H1>PHP Laravel Barcode QR Reader</H1>
        <form action="{{ route('image.upload') }}" method="post" enctype="multipart/form-data">
        @csrf
            Select barcode image:
            <input type="file" name="BarcodeQrImage" id="BarcodeQrImage" accept="image/*"><br>
            <input type="submit" value="Read Barcode" name="submit">
        </form>
        <img id="image" />
        <script>
            var input = document.querySelector('input[type=file]');
            input.onchange = function() {
                var file = input.files[0];
                var fileReader = new FileReader();
                fileReader.onload = function(e) {
                    {
                        let image = document.getElementById('image');
                        image.src = e.target.result;
                    }
                }
                fileReader.readAsDataURL(file);
            }
        </script>
    </body>
    
    </html>
    


    CSRF Protection은 양식에 필요합니다. 편리한 방법은 @csrf Blade 지시문을 사용하여 숨겨진 토큰 입력 필드를 생성하는 것입니다.

    <form action="{{ route('image.upload') }}" method="post" enctype="multipart/form-data">
        @csrf
        ...
    </form>
    


    웹 페이지가 완료되면 한 가지 추가 단계는 public/routes/web.php에 웹 경로를 추가하는 것입니다.

    Route::get('/barcode_qr_reader', 'App\Http\Controllers\ImageUploadController@page');
    Route::post('/barcode_qr_reader/upload', 'App\Http\Controllers\ImageUploadController@upload')->name('image.upload');
    


    5단계: PHP Laravel 바코드 QR 코드 리더 실행



    이제 PHP Laravel 프로젝트를 실행하고 브라우저에서 http://127.0.0.1:8000/barcode_qr_reader를 방문할 수 있습니다.

    php artisan serve
    




    소스 코드



    https://github.com/yushulx/php-laravel-barcode-qr-reader

    좋은 웹페이지 즐겨찾기