Search by

ozodbekphp / laravel-imei-reader

ozodbekphp

High-performance PHP & Laravel package to decode barcodes and extract 15-digit IMEIs from Base64 images with Luhn validation.

Package info

github.com/ozodbekphp/laravel-imei-reader

pkg:composer/ozodbekphp/laravel-imei-reader

Statistics

Installs: 13

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.6 2026-10-07 17:27 UTC

This package is auto-updated.

Last update: 2026-10-07 17:27:53 UTC


README

Latest Version PHP Version Laravel Version License: MIT

Base64 rasmlardan yoki fayllardan shtrix-kodlar (Code 128, Code 39, EAN-13, ITF, QR Code) orqali 15 xonali IMEI raqamlarini o'qiydigan, Dual-SIM telefon qutilarini taniydigan va Luhn (Mod 10) algoritmi orqali tekshiradigan yuqori tezlikdagi PHP va Laravel kutubxonasi.

๐ŸŒŸ Asosiy imkoniyatlari (Features)

  • ๐Ÿ“ธ Base64 formatdagi rasmlardan IMEI o'qish: data:image/png;base64,... yoki toza base64 satrlar bilan ishlaydi.
  • ๐Ÿ“ Fayllardan o'qish: JPEG, PNG, WEBP, GIF, BMP formatdagi rasm fayllaridan ham o'qiydi.
  • ๐Ÿ”ข 15 xonali IMEI ajratib olish: Skaner qilingan shtrix-kod matnidan barcha 15 xonali raqamlarni avtomatik topadi (\b\d{15}\b, IMEI:, IMEI 1:, IMEI 2:, S/N:, TAC/SNR/CD).
  • ๐Ÿ“ฑ Dual SIM qo'llab-quvvatlash: 2 ta IMEI bo'lgan qutilardan IMEI 1 va IMEI 2 ni alohida ajratib beradi.
  • ๐Ÿ›ก๏ธ Luhn algoritmi (Checksum) tekshiruvi: IMEI ning 15-chi nazorat raqami (Check Digit) to'g'riligini matematik tekshiradi.
  • ๐Ÿ”„ Avtomatik burish (Rotation): 90ยฐ, 180ยฐ, 270ยฐ burchak ostidagi shtrix-kodlarni ham taniydi.
  • โšก Sof PHP (Pure PHP GD): Tashqi tizim dasturlariga majburiy bog'liqlik yo'q (ixtiyoriy ravishda ZBar CLI ham qo'llab-quvvatlanadi).
  • ๐Ÿงฉ Laravel 10 / 11 / 12 integratsiyasi: Facade, ServiceProvider, Artisan buyruq, Validator qoidasi ('imei', 'imei_strict') va helper funksiyalar mavjud.

๐Ÿš€ O'rnatish (Installation)

1. Packagist orqali (Kutubxona yuklash mutlaqo BEPUL):

composer require ozodbekphp/laravel-imei-reader

2. Mahalliy loyihada ishlatish (Local Path Repository):

Agar kutubxonani Packagist ga chiqarmasdan o'z kompyuteringizdagi Laravel loyihangizda to'g'ridan-to'g'ri ishlatmoqchi bo'lsangiz, asosiy loyihangizdagi composer.json fayliga quyidagini qo'shing:

"repositories": [
    {
        "type": "path",
        "url": "/home/ozodbek/Documents/Ozodbek/laravel-imei-reader"
    }
]

So'ngra buyruqni bering:

composer require ozodbekphp/laravel-imei-reader

๐Ÿ› ๏ธ Foydalanish (Usage)

1. Facade orqali Base64 rasmdan o'qish

use Ozodbek\LaravelImeiReader\Facades\ImeiReader;

// Base64 rasm (masalan, frontend dan kelgan rasm)
$base64Image = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...";

$result = ImeiReader::fromBase64($base64Image)->read();

if ($result->hasImei()) {
    // 1. Birinchi topilgan IMEI
    $imei = $result->getFirstImei(); // "861234567890127"

    // 2. Barcha topilgan IMEI lar massivi
    $allImeis = $result->getImeis(); // ["861234567890127", "356938035643809"]

    // 3. Dual SIM ma'lumotlari
    if ($result->isDualSim()) {
        $imei1 = $result->getImei1(); // "861234567890127"
        $imei2 = $result->getImei2(); // "356938035643809"
    }

    // 4. Luhn tekshiruvi (Check Digit to'g'rimi?)
    $isValid = $result->isLuhnValid; // true / false

    // 5. To'liq natijani Array yoki JSON ko'rinishida olish
    $array = $result->toArray();
    $json = $result->toJson();
}

2. Rasm faylidan o'qish (File Upload)

use Ozodbek\LaravelImeiReader\Facades\ImeiReader;
use Illuminate\Http\Request;

public function uploadBarcode(Request $request)
{
    $request->validate([
        'image' => 'required|image',
    ]);

    $filePath = $request->file('image')->getRealPath();

    // Fayldan o'qish
    $result = ImeiReader::fromFile($filePath)->read();

    return response()->json([
        'success' => $result->hasImei(),
        'imeis' => $result->getImeis(),
        'primary_imei' => $result->getFirstImei(),
        'is_dual_sim' => $result->isDualSim(),
        'details' => $result->imeiDetails,
    ]);
}

3. Qattiq Luhn nazorati (Strict Luhn Validation)

Agar siz faqatgina matematik 15-raqami to'g'ri bo'lgan haqiqiy IMEI larni qabul qilmoqchi bo'lsangiz:

// Faqatgina Luhn formulasi to'g'ri kelgan IMEI larni qaytaradi
$result = ImeiReader::strictLuhn(true)
    ->fromBase64($base64Image)
    ->read();

4. Helper funksiyalar orqali o'qish

// 1. Base64 dan to'g'ridan-to'g'ri o'qish
$result = read_imei_from_base64($base64Image);
echo $result->getFirstImei();

// 2. Fayldan to'g'ridan-to'g'ri o'qish
$result = read_imei_from_file('/path/to/phone_box_barcode.png');
print_r($result->getImeis());

5. Laravel Request Validation Qoidalari

Form request yoki Controller da IMEI ni tekshirish:

use Ozodbek\LaravelImeiReader\Rules\ImeiRule;

// 1-usul: String qoida
$request->validate([
    'imei' => 'required|imei',        // 15 xonali raqam ekanligini tekshiradi
    'strict_imei' => 'required|imei_strict', // 15 xona + Luhn checksum tekshiradi
]);

// 2-usul: Rule obyekti
$request->validate([
    'imei' => ['required', new ImeiRule(strictLuhn: true)],
]);

6. Artisan CLI Buyrug'i orqali tekshirish

Terminalda rasm yoki fayldagi IMEI ni darhol skaner qilish:

# Fayldan skaner qilish
php artisan imei:read /path/to/sticker.png --file

# Strict tekshiruv bilan
php artisan imei:read /path/to/sticker.png --file --strict

7. Test / Chop etish uchun Barcode yaratish (Utility)

Ixtiyoriy IMEI uchun Code 128 shtrix-kod rasmini Base64 formatida generatsiya qilish:

use Ozodbek\LaravelImeiReader\Facades\ImeiReader;

$base64Barcode = ImeiReader::generateBarcodeBase64("861234567890127");
// Natija: data:image/png;base64,iVBORw...

โš™๏ธ Konfiguratsiya (Config)

Konfiguratsiya faylini loyihangizga ko'chirish:

php artisan vendor:publish --tag=imei-reader-config

config/imei-reader.php fayli tarkibi:

return [
    // Luhn tekshiruvi majburiy bo'lsinmi
    'strict_luhn' => false,

    // Rasm burilgan bo'lsa avtomatik 90, 180, 270 gradusga burib qidirish
    'enable_rotations' => true,

    // Aktiv shtrix-kod o'quvchilari
    'readers' => [
        Ozodbek\LaravelImeiReader\Readers\Code128Reader::class,
        Ozodbek\LaravelImeiReader\Readers\Code39Reader::class,
        Ozodbek\LaravelImeiReader\Readers\Ean13Reader::class,
        Ozodbek\LaravelImeiReader\Readers\QrCodeReader::class,
    ],
];

โ“ Kutubxonani Packagist.org ga yuklash bepulmi?

HA, MUTLAQO BEPUL! PHP Composer kutubxonalari ekotizimi mutlaqo tekin:

  1. Loyihangizni o'zingizning GitHub akkauntingizga yuklaysiz (git push origin main).
  2. Packagist.org saytiga bepul ro'yxatdan o'tasiz.
  3. Submit bo'limiga GitHub repository havolasini kiritasiz.
  4. Shundan so'ng butun dunyo bo'ylab har qanday dasturchi composer require ozodbekphp/laravel-imei-reader orqali bepul yuklab oladi!

๐Ÿงช Testlarni ishga tushirish (Testing)

composer test
# yoki
./vendor/bin/phpunit

๐Ÿ“„ Litsenziya (License)

Ushbu paket MIT litsenziyasi ostida ochiq manbali hisoblanadi. Muallif: Ozodbek