في الآونة الأخيرة ، أراد طفلي عمل تلوين لشخصية من الرسوم المتحركة المفضلة لديه. كان الحل الواضح هو استخدام نوع من المحرر الرسومي لنظام Linux (لأنني أحد مستخدمي Linux) ، ولكن بعد ذلك تذكرت أنني شخص كسول.
لحسن الحظ ، أنا على دراية ب Python و JupyterLab. دعونا نرى كيف يجعل Jupyter المهمة أسهل.
بادئ ذي بدء ، سنحتاج بالطبع إلى إصدار حديث من Python (إذا كنت من مستخدمي macOS ، فيمكنك اتباع هذا البرنامج التعليمي ). ثم تحتاج إلى تثبيت وفتح JupyterLab and Pillow - شوكة مكتبة Python Imaging Library (PIL):
$ python -V
Python 3.8.5
$ pip install jupyterlab pillow
……………………..
$ jupyter lab
في هذه الحالة ، نريد أن نرسم بصورة غزال. أولاً ، لنقم بتنزيل الصورة وحفظها محليًا. من الأفضل استخدام صور من Creative Commons أو تراخيص أخرى مفتوحة المصدر حتى لا تتورط في حقوق النشر. في هذا المثال ، استخدمت صورة مفتوحة المصدر من Unsplash وسميتها deer.jpg.
لنبدأ بالاستيراد:
from PIL import Image
لنفتح الصورة ونتحقق من حجمها:
pic = Image.open("deer.jpg")
pic.size
(3561, 5342)
ربما يكون هذا كثيرًا جدًا بالنسبة لمهمتنا. هذه الصور عالية الدقة مفيدة للكتب وليست لصفحات التلوين. تقليل حجم الصورة:
x, y = pic.size
x //= 10
y //= 10
smaller = pic.resize((x, y))
أصبح الحجم أصغر 10 مرات.
smaller
تماما. المضي قدما.
يجب أن يكون هذا الغزال فريسة سهلة لخوارزمية اكتشاف الحدود. نحتاج إلى تنظيف الصورة لتسهيل التلوين. ولحسن الحظ ، هناك خوارزمية جاهزة لهذا أيضًا:
from PIL import ImageFilter
edges = smaller.filter(ImageFilter.FIND_EDGES)
edges
ربما تكون هذه هي الخطوة الأكثر أهمية. سنزيل كل التفاصيل الدخيلة ونترك خطوطًا واضحة. اللون غريب بعض الشيء ، لكن هذه المشكلة ليست صعبة الحل. قسّم الصورة إلى خطوط ملونة وحدد الصورة التي تحتوي على خطوط أوضح:
bands = edges.split()
bands[0]
أصبحت الخطوط الآن واضحة ، لكن اللوحة نفسها ليست مناسبة للطباعة بعد ، لأن حبر الطابعة سينفد ، ولن يرغب طفلك في رسم صورة على خلفية سوداء. لذلك نقوم بقلب الألوان. عيّن عتبات x إلى max-black و max-white لجعل الخطوط أكثر وضوحًا:
outline = bands[0].point(lambda x: 255 if x<100 else 0)
outline
الآن دعنا ننتبه إلى أن هناك الكثير من المساحات الفارغة في الصورة ، لذلك سنقوم بقصها:
outline.crop((10, 200, 300, 400))
حسنا هذا كل شيء. لنحفظ الصورة بصيغة PDF (للطباعة):
outline.save("deer.pdf")
هذه هي الطريقة التي يمكنك بها بسهولة إنشاء صفحات التلوين الخاصة بك لأطفالك: الحد الأدنى من الروتين ، والحد الأقصى من البرمجة!
إعلان
خوادم Epic هي Linux أو Windows VPSs مع معالجات AMD EPYC قوية ومحركات Intel NVMe سريعة جدًا. تفريق مثل الكعك الساخن!
