## الإعدادات
#### Composer
قم بتشغيل `composer require simplesoftwareio/simple-qrcode "~4"` لإضافة الحزمة.
لارافل ستقوم تلقائيا بتنصيب الحزمة.
## أفكار بسيطة
#### عرض الطباعة
واحدة من العناصر التي تستخدم هذه الحزمة لأجل الحصول على QrCodes في كل عروض الطباعة. هذه الخاصية تسمح للمستخدم للرجوع إلى الصفحة الأصلية بعد أن تمت طباعة الكود.
حصلنا على هذه النتيجة عن طريق إضافة التالي لتذييل الصفحة footer.blade.php
{!! QrCode::size(100)->generate(Request::url()); !!}
Scan me to return to the original page.
#### تضمين QrCode
ممكن ان تضمن الqrcode داخل بريد إلكتروني للسماح لمستخدميك بعمل مسح سريع على qrcode.
التالي هو مثال لكيفية عمل هذا بإستخدام إطار العمل لارافل.
//Inside of a blade template.
## الإستخدامات
#### الإستخدامات البسيطة
```
// جميع الأمثلة التالية تفترض أن واجهة Qrcode تم إستدعائها.
// واجهة Qrcode يتم إستدعائها تلقائيا بالنسبة لمستخدمي لارافل
use Manoar\QrCode\Facades\QrCode;
```
يعد استخدام QrCode Generator أمرًا سهلاً للغاية. أبسط شكل للكود هو:
use Manoar\QrCode\Facades\QrCode;
QrCode::generate('Make me into a QrCode!');
هذا سيحول الكود إلى QrCode يحمل العبارة التالية: "Make me into a QrCode!"

#### Generate `(string $data, string $filename = null)`
`Generate` تستخدم لإنشاء QrCode
QrCode::generate('Make me into a QrCode!');
`Generate` بشكل افتراضي سيعيد سلسلة صورة SVG. يمكنك طباعة هذا مباشرة في متصفح حديث داخل نظام Laravel's Blade باستخدام ما يلي:
{!! QrCode::generate('Make me into a QrCode!'); !!}
طريقة "generate" لها معلمة ثانية ستقبل اسم ملف ومسار لحفظ رمز الاستجابة السريعة.
QrCode::generate('Make me into a QrCode!', '../public/qrcodes/qrcode.svg');
#### شكل `(string $format)`
ثلاثة تنسيقات مدعومة حاليا ؛ `png`, `eps`, و `svg` . لتغيير التنسيق استخدم الكود التالي:
QrCode::format('png'); //Will return a png image
QrCode::format('eps'); //Will return a eps image
QrCode::format('svg'); //Will return a svg image
> `imagick` مطلوبة لإنشاء إمتداد `png`
#### Size `(int $size)`
يمكنك تغيير حجم رمز الاستجابة السريعة باستخدام طريقة`size`. ما عليك سوى تحديد الحجم المطلوب بالبكسل باستخدام الصيغة التالية:
QrCode::size(100);
 
#### Color `(int $red, int $green, int $blue, int $alpha = null)`
>كن حذرًا عند تغيير لون رمز QrCode ، حيث يواجه بعض القراء صعوبة بالغة في قراءة رموز QrCode بالألوان.
يجب التعبير عن كل الألوان في RGBA (أحمر أخضر أزرق ألفا). يمكنك تغيير لون رمز الاستجابة السريعة باستخدام ما يلي:
QrCode::color(255, 0, 0); // Red QrCode
QrCode::color(255, 0, 0, 25); //Red QrCode with 25% transparency
 
#### Background Color `(int $red, int $green, int $blue, int $alpha = null)`
يمكنك تغيير لون خلفية رمز QrCode عن طريق استدعاء دالة `backgroundColor`.
QrCode::backgroundColor(255, 0, 0); // Red background QrCode
QrCode::backgroundColor(255, 0, 0, 25); //Red background QrCode with 25% transparency
 
#### Gradient `$startRed, $startGreen, $startBlue, $endRed, $endGreen, $endBlue, string $type)`
يمكنك تطبيق التدرج اللوني في الQrcode عن طريق إستدعاء الدالة `gradient`
يتم دعم أنواع التدرجات اللونية التالية:
| النوع | مثال |
| --- | --- |
| `vertical` |  |
| `horizontal` |  |
| `diagonal` |  |
| `inverse_diagonal` |  |
| `radial` |  |
#### EyeColor `(int $eyeNumber, int $innerRed, int $innerGreen, int $innerBlue, int $outterRed = 0, int $outterGreen = 0, int $outterBlue = 0)`
ربما تريد تغيير لون العين بإستخدم دالة `eyeColor`.
QrCode::eyeColor(0, 255, 255, 255, 0, 0, 0); // Changes the eye color of eye `0`
| رقم العين | مثال |
| --- | --- |
| `0` |  |
| `1` | |
| `2` |  |
#### Style `(string $style, float $size = 0.5)`
يمكن تبديل النمط بسهولة بـ`square` أو `dot` أو`round`. سيؤدي هذا إلى تغيير الكتل داخل
سيأثر المعامل الثاني للدالة على الحجم الخاص بالنقاط و الإستدارة
التنسيق
QrCode::style('dot'); // Uses the `dot` style.
| التنسيق | مثال |
| --- | --- |
| `square` |  |
| `dot` | |
| `round` |  |
#### Eye Style `(string $style)`
العين التي بداخل الQrcode تدعم طريقتين مختلفيتين في التنسيق `square` و `circle`
QrCode::eye('circle'); // Uses the `circle` style eye.
| Style | Example |
| --- | --- |
| `square` |  |
| `circle` | |
#### Margin `(int $margin)`
القدرة على تغيير الهامش حول QrCode مدعومة أيضًا. ما عليك سوى تحديد الهامش المطلوب باستخدام الصيغة التالية:
QrCode::margin(100);
#### Error Correction `(string $errorCorrection)`
من السهل تغيير مستوى تصحيح الخطأ. فقط استخدم الصيغة التالية:
QrCode::errorCorrection('H');
الخيارات التالية تم دعمها في دالة `errorCorrection`:
| تصحيح الخطأ | الضمان المتوفر |
| --- | --- |
| L | 7% يمكن استعادة الكلمات المشفرة. |
| M | 15% يمكن استعادة الكلمات المشفرة. |
| Q | 25% يمكن استعادة الكلمات المشفرة. |
| H | 30% يمكن استعادة الكلمات المشفرة. |
> كلما إستخدمت نسبة تصحيح الخطأ أكثر, لكما قلت مصداقية ال Qrcode في إسترجاع البيانات المسجلة داخله
> إطلع أكثر حول [تصحيح الخطأ](https://ar.wikipedia.org/wiki/%D8%B1%D9%85%D8%B2_%D8%A7%D8%B3%D8%AA%D8%AC%D8%A7%D8%A8%D8%A9_%D8%B3%D8%B1%D9%8A%D8%B9%D8%A9#Error_correction).
#### Encoding `(string $encoding)`
قم بتغيير ترميز الأحرف المستخدم لبناء QrCode. افتراضيًا ، يتم تحديد "ISO-8859-1" باعتباره المشفر. اقرأ المزيد عن [ترميز الحروف](http://en.wikipedia.org/wiki/Character_encoding).
يمكنك تغيير هذا إلى أي مما يلي:
QrCode::encoding('UTF-8')->generate('Make me a QrCode with special symbols ♠♥!!');
| تشفير الأحرف |
| --- |
| ISO-8859-1 |
| ISO-8859-2 |
| ISO-8859-3 |
| ISO-8859-4 |
| ISO-8859-5 |
| ISO-8859-6 |
| ISO-8859-7 |
| ISO-8859-8 |
| ISO-8859-9 |
| ISO-8859-10 |
| ISO-8859-11 |
| ISO-8859-12 |
| ISO-8859-13 |
| ISO-8859-14 |
| ISO-8859-15 |
| ISO-8859-16 |
| SHIFT-JIS |
| WINDOWS-1250 |
| WINDOWS-1251 |
| WINDOWS-1252 |
| WINDOWS-1256 |
| UTF-16BE |
| UTF-8 |
| ASCII |
| GBK |
| EUC-KR |
#### Merge `(string $filepath, float $percentage = .2, bool $absolute = false)`
تدمج دالة `merge` صورة عبر QrCode. يستخدم هذا بشكل شائع لوضع الشعارات داخل QrCode.
//Generates a QrCode with an image centered in the middle.
QrCode::format('png')->merge('path-to-image.png')->generate();
//Generates a QrCode with an image centered in the middle. The inserted image takes up 30% of the QrCode.
QrCode::format('png')->merge('path-to-image.png', .3)->generate();
//Generates a QrCode with an image centered in the middle. The inserted image takes up 30% of the QrCode.
QrCode::format('png')->merge('http://www.google.com/someimage.png', .3, true)->generate();
> دالة "merge" تدعم PNG فقط في الوقت الحالي.
> يعد مسار الملف نسبيًا لمسار التطبيق الأساسي إذا تم تعيين`$absolute` على `false`. غيّر هذا المتغير إلى `true` لاستخدام المسارات المطلقة.
> يجب عليك استعمال نسبة الإرتفاع ل تصحيح الخطأ عندما تستعمل دالة `merge` للتأكد أن ال Qrcode باقي سهل القراءة. نوصي باستخدام `errorCorrection('H')`.

#### Merge Binary String `(string $content, float $percentage = .2)`
دالة `mergeString` يمكن إستخدامها للوصول لنفس النتيجة عندما تستدعي دالة `merge`, باستثناء أنه يسمح لك بتوفير تمثيل سلسلة للملف بدلاً من مسار الملف. هذا مفيد عند العمل مع واجهة `Storage`. واجهته مشابهة تمامًا لدالة `merge`
//Generates a QrCode with an image centered in the middle.
QrCode::format('png')->mergeString(Storage::get('path/to/image.png'))->generate();
//Generates a QrCode with an image centered in the middle. The inserted image takes up 30% of the QrCode.
QrCode::format('png')->mergeString(Storage::get('path/to/image.png'), .3)->generate();
>كما هو الحال مع استدعاء `merge` العادي ، يتم دعم PNG فقط في الوقت الحالي. الأمر نفسه ينطبق على تصحيح الخطأ ، ويوصى بالمستويات العالية.
#### إستعمالات متقدمة
جميع الدوال تدعم التسلسل. يجب إستدعاء دالة `generate` في الأخير. على سبيل المثال:
QrCode::size(250)->color(150,90,10)->backgroundColor(10,14,244)->generate('Make me a QrCode!');
QrCode::format('png')->size(399)->color(40,40,40)->generate('Make me a QrCode!');
تستطيع عرض صورة بإمتداد PNG بدون حفظ الملف من خلال توفير سلسلة raw string و encoding بواسطة `base64_encode`.
## الدوال المساعدة
#### ماهي الدوال المساعدة
تعد الدوال المساعدة طريقة سهلة لإنشاء QrCodes التي تجعل القارئ يقوم بعمل معين عند مسحه ضوئيا
#### بيتكوين
This helper generates a scannable bitcoin to send payments. [More information](https://bitco.in/en/developer-guide#plain-text)
هاته الدالة المساعدة تقوم بعمل إنشاء عملة بيتكوين قابلة للمسح لإرسال مدفوعات. [لمزيد من المعلومات أضغط على الرابط](https://bitco.in/en/developer-guide#plain-text)
QrCode::BTC($address, $amount);
//Sends a 0.334BTC payment to the address
QrCode::BTC('bitcoin address', 0.334);
//Sends a 0.334BTC payment to the address with some optional arguments
QrCode::size(500)->BTC('address', 0.0034, [
'label' => 'my label',
'message' => 'my message',
'returnAddress' => 'https://www.returnaddress.com'
]);
#### البريد الإلكتروني
هاته الدالة المساعدة تمكنك من إنشاء QrCode للبريد الإلكتروني عنوان بريد إلكتروني مع الموضوع و المحتوى
QrCode::email($to, $subject, $body);
//Fills in the to address
QrCode::email('foo@bar.com');
//Fills in the to address, subject, and body of an e-mail.
QrCode::email('foo@bar.com', 'This is the subject.', 'This is the message body.');
//Fills in just the subject and body of an e-mail.
QrCode::email(null, 'This is the subject.', 'This is the message body.');
#### الموقع الجغرافي
هاته الدالة المساعة تنشأ لك خطوط طول و عرض لتتم القرائة عن طريق الهاتف و فتح الموقع على خرائط Google أو تطبيق مشابه
QrCode::geo($latitude, $longitude);
QrCode::geo(37.822214, -122.481769);
#### رقم الهاتف
هاته الدالة تمكنك من إنشاء QrCode يستطيع الهاتف مسحه و الإتصال بالرقم.
QrCode::phoneNumber($phoneNumber);
QrCode::phoneNumber('555-555-5555');
QrCode::phoneNumber('1-800-Laravel');
#### الرسائل القصيرة (الرسائل النصية)
هاته الدالة المساعدة تمكنك من إنشاء رسالة نصية و التي يمكن تعبئتها مسبقًا بالإرسال إلى العنوان ونص الرسالة:
QrCode::SMS($phoneNumber, $message);
//Creates a text message with the number filled in.
QrCode::SMS('555-555-5555');
//Creates a text message with the number and message filled in.
QrCode::SMS('555-555-5555', 'Body of the message');
#### الوايفاي
هاته الدالة المساعدة تمكنك من مسح ال QrCodes التي بدورها تعمل إتصال من الهاتف لشبكة الوايفاي:
QrCode::wiFi([
'encryption' => 'WPA/WEP',
'ssid' => 'SSID of the network',
'password' => 'Password of the network',
'hidden' => 'Whether the network is a hidden SSID or not.'
]);
//Connects to an open WiFi network.
QrCode::wiFi([
'ssid' => 'Network Name',
]);
//Connects to an open, hidden WiFi network.
QrCode::wiFi([
'ssid' => 'Network Name',
'hidden' => 'true'
]);
//Connects to a secured WiFi network.
QrCode::wiFi([
'ssid' => 'Network Name',
'encryption' => 'WPA',
'password' => 'myPassword'
]);
> منتجات أبل في الوقت الحالي لا تدعم مسح الوايفاي عن طريق ال QrCode
## الإستعمالات الشائعة لل QrCode
يمكنك استخدام بادئة موجودة في الجدول أدناه داخل قسم `generate` لإنشاء رمز QrCode لتخزين المزيد من المعلومات المتقدمة:
QrCode::generate('http://www.tarikmanoar.com');
| الإستعمال | الإختصار | مثال |
| --- | --- | --- |
| رابط موقع إلكتروني | http:// | http://www.tarikmanoar.com |
| عنوان URL آخمن | https:// | https://www.tarikmanoar.com |
| بريد إلكتروني | mailto: | mailto:support@tarikmanoar.com |
| رقم هاتف | tel: | tel:555-555-5555 |
| رسالة نصية (SMS) | sms: | sms:555-555-5555 |
| رسالة نصية (SMS) مع رسالة مكتوبة مسبقًا | sms: | sms::I am a pretyped message |
| رسالة نصية (SMS) مع رسالة ورقم مكتوب مسبقًا | sms: | sms:555-555-5555:I am a pretyped message |
| العنوان الجغرافي | geo: | geo:-78.400364,-85.916993 |
| MeCard | mecard: | MECARD:Simple, Software;Some Address, Somewhere, 20430;TEL:555-555-5555;EMAIL:support@tarikmanoar.com; |
| VCard | BEGIN:VCARD | [See Examples](https://en.wikipedia.org/wiki/VCard) |
| الوايفاي | wifi: | wifi:WEP/WPA;SSID;PSK;Hidden(True/False) |
## إستخدام خارج لارافل
يمكنك إستخدام هاته الحزمة خارج إطار لارافل عبر إنشاء `Generator` كلاس Class جديد:
use Manoar\QrCode\Generator;
$qrcode = new Generator;
$qrcode->size(500)->generate('Make a qrcode without Laravel!');