Amir Alsaeed نشر 12 مارس 2021 أرسل تقرير نشر 12 مارس 2021 لدي سكريبت بايثون يقوم ببعض عمليات المعالجة على صورة ما وتوليد ألوان محددة ثم أريد أن أقوم بجلب الصورة من السكريبت إلى لارافيل ضمن المتحكم الخاص بذلك. قرأت عن استخدام process في لارافيل، لكن نجحت فقط باستدعاء السكريبت لم أتمكن من جلب الصورة أو محتوى السكريبت إلى لارافيل. public function newImage() { $process = new Process('python3 /docuemnts/shell.py'); $process->run(); } فكيف يمكنني جلب الصورة بعد إنشائها أو معالجتها ضمن بايثون إلى لارافيل؟ اقتباس
1 Sam Ahw نشر 12 مارس 2021 أرسل تقرير نشر 12 مارس 2021 يجب ترميز الملف (الصورة) بالصيغة base64 وطباعته في shell قبل نقله إلى لارافيل، ثم يتم فك الترميز base64 في لارافيل. فبفرض لديك السكريبت التالي في بايثون: import base64 from io import BytesIO from PIL import Image, ImageDraw background = Image.new('RGBA', (500, 500)) d = ImageDraw.Draw(background) d.text((10, 10), "Hello World", fill=(255, 255, 0)) imgByteArr = BytesIO() background.save(imgByteArr, format='PNG') imgByteArr = base64.b64encode(imgByteArr.getvalue()) --> يتم هنا الترميز في base64 قبل الطباعة print(imgByteArr) ثم في لارافيل يتم استدعاء process وانتظار انتهاء تنفيذ السكريبت واختبار حدوث أي خطأ أثناء التنفيذ عن طريق استخدام process->isSuccessful كالتالي: public function newImage() { $process = new Process('python3 /path-to-script/shell.py'); $process->run(); if ( ! $process->isSuccessful()) { return abort(404); } return response(base64_decode(str_replace_first('b', '', $process->getOutput())))->header('Content-Type', 'image/png'); } حيث يتم استخدام base64_decode لفك الترميز ونمرر له القيمة الناتجة من تنفيذ السكريبت السابق عن طريق process->getOutput وأخيراً يجب إضافة الترويسة المناسبة لنمط الملف، في حال (صورة) يكون image/png. 2 اقتباس
السؤال
Amir Alsaeed
لدي سكريبت بايثون يقوم ببعض عمليات المعالجة على صورة ما وتوليد ألوان محددة ثم أريد أن أقوم بجلب الصورة من السكريبت إلى لارافيل ضمن المتحكم الخاص بذلك.
قرأت عن استخدام process في لارافيل، لكن نجحت فقط باستدعاء السكريبت لم أتمكن من جلب الصورة أو محتوى السكريبت إلى لارافيل.
public function newImage() { $process = new Process('python3 /docuemnts/shell.py'); $process->run(); }
فكيف يمكنني جلب الصورة بعد إنشائها أو معالجتها ضمن بايثون إلى لارافيل؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.