ozodbekphp / laravel-imei-reader
High-performance PHP & Laravel package to decode barcodes and extract 15-digit IMEIs from Base64 images with Luhn validation.
Requires
- php: ^8.1 || ^8.2 || ^8.3 || ^8.4
- ext-ctype: *
- ext-gd: *
- ext-json: *
- khanamiryan/qrcode-detector-decoder: ^1.0 || ^2.0
Requires (Dev)
- orchestra/testbench: ^8.0 || ^9.0 || ^10.0
- phpunit/phpunit: ^10.0 || ^11.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
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 1vaIMEI 2ni 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:
- Loyihangizni o'zingizning GitHub akkauntingizga yuklaysiz (
git push origin main). - Packagist.org saytiga bepul ro'yxatdan o'tasiz.
- Submit bo'limiga GitHub repository havolasini kiritasiz.
- Shundan so'ng butun dunyo bo'ylab har qanday dasturchi
composer require ozodbekphp/laravel-imei-readerorqali 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