العمل مع الصور في بايثون

العمل مع الصور في بايثون

PIL هي مكتبة تصوير Python التي توفر لمترجم Python إمكانات تحرير الصور. تم تطويره بواسطة فريدريك لوند والعديد من المساهمين الآخرين. الوسادة هي شوكة PIL الصديقة ومكتبة سهلة الاستخدام تم تطويرها بواسطة Alex Clark ومساهمين آخرين. سنعمل مع الوسادة.

تثبيت:

  • لينكس: في محطة Linux اكتب ما يلي:
     pip install Pillow  تثبيت النقطة عبر المحطة:  
     sudo apt-get update   
    sudo apt-get install python-pip
  • ويندوز: تحميل حزمة الوسادة المناسبة وفقًا لإصدار بايثون الخاص بك. تأكد من التنزيل وفقًا لإصدار python الموجود لديك.

سنعمل هنا مع وحدة الصورة التي توفر فئة تحمل الاسم نفسه وتوفر الكثير من الوظائف للعمل على صورنا. لاستيراد وحدة الصورة، يجب أن يبدأ الكود الخاص بنا بالسطر التالي:

  from PIL import Image  

العمليات مع الصور:

  • افتح صورة معينة من المسار: Python
       #img = Image.open(path)    # On successful execution of this statement   # an object of Image type is returned and stored in img variable)   try  :   img   =   Image  .  open  (  path  )   except   IOError  :   pass   # Use the above statement within try block as it can    # raise an IOError if file cannot be found    # or image cannot be opened.   
  • استرداد حجم الصورة : تحتوي مثيلات فئة الصورة التي تم إنشاؤها على العديد من السمات، إحدى سماتها المفيدة هي الحجم. Python
       from   PIL   import   Image   filename   =   'image.webp'   with   Image  .  open  (  filename  )   as   image  :   width     height   =   image  .  size   #Image.size gives a 2-tuple and the width height can be obtained   
    بعض السمات الأخرى هي: Image.width Image.height Image.format Image.info إلخ.
  • حفظ التغييرات في الصورة: لحفظ أي تغييرات أجريتها على ملف الصورة، نحتاج إلى توفير المسار بالإضافة إلى تنسيق الصورة. Python
       img  .  save  (  path     format  )   # format is optional if no format is specified    #it is determined from the filename extension   
  • تدوير الصورة: يحتاج تدوير الصورة إلى زاوية كمعلمة لتدوير الصورة. Python
       from   PIL   import   Image   def   main  ():   try  :   #Relative Path   img   =   Image  .  open  (  'picture.webp'  )   #Angle given   img   =   img  .  rotate  (  180  )   #Saved in the same relative location   img  .  save  (  'rotated_picture.webp'  )   except   IOError  :   pass   if   __name__   ==   '__main__'  :   main  ()   
    تدوير الصورة في بايثون ملاحظة: تتوفر علامة توسيع اختيارية كأحد وسيطات طريقة التدوير والتي إذا تم ضبطها على "صحيح" فإنها تعمل على توسيع الصورة الناتجة لجعلها كبيرة بما يكفي لاستيعاب الصورة التي تم تدويرها بالكامل. كما هو موضح في مقتطف الكود أعلاه، فقد استخدمت مسارًا نسبيًا حيث توجد صورتي في نفس الدليل مثل ملف كود بايثون الخاص بي، ويمكن استخدام المسار المطلق أيضًا.
  • اقتصاص صورة: يأخذ Image.crop(box) إحداثيات بكسل مكونة من 4 صفوف (يسار أعلى يمين أسفل) ويعيد منطقة مستطيلة من الصورة المستخدمة. Python
       from   PIL   import   Image   def   main  ():   try  :   #Relative Path   img   =   Image  .  open  (  'picture.webp'  )   width     height   =   img  .  size   area   =   (  0     0     width  /  2     height  /  2  )   img   =   img  .  crop  (  area  )   #Saved in the same relative location   img  .  save  (  'cropped_picture.webp'  )   except   IOError  :   pass   if   __name__   ==   '__main__'  :   main  ()   
    قص الصورة في بايثون
  • تغيير حجم الصورة: Image.resize(size)- يتم توفير الحجم هنا على شكل صفين من العرض والارتفاع. Python
       from   PIL   import   Image   def   main  ():   try  :   #Relative Path   img   =   Image  .  open  (  'picture.webp'  )   width     height   =   img  .  size   img   =   img  .  resize  ((  width  /  2     height  /  2  ))   #Saved in the same relative location   img  .  save  (  'resized_picture.webp'  )   except   IOError  :   pass   if   __name__   ==   '__main__'  :   main  ()   
    تغيير حجم الصورة في بيثون
  • لصق صورة على صورة أخرى: يمكن أن تكون الوسيطة الثانية صفًا مزدوجًا (تحديد الزاوية اليسرى العليا) أو صفًا رباعيًا (يسارًا أعلى يمينًا أسفل) - في هذه الحالة يجب أن يتطابق حجم الصورة الملصقة مع حجم منطقة المربع هذه أو لا شيء وهو ما يعادل (0 0). Python
       from   PIL   import   Image   def   main  ():   try  :   #Relative Path   #Image on which we want to paste   img   =   Image  .  open  (  'picture.webp'  )   #Relative Path   #Image which we want to paste   img2   =   Image  .  open  (  'picture2.webp'  )   img  .  paste  (  img2     (  50     50  ))   #Saved in the same relative location   img  .  save  (  'pasted_picture.webp'  )   except   IOError  :   pass   if   __name__   ==   '__main__'  :   main  ()   ##An additional argument for an optional image mask image is also available.   
    لصق صورة على أخرى في بايثون
  • الحصول على رسم بياني للصورة: سيؤدي هذا إلى إرجاع رسم بياني للصورة كقائمة بعدد وحدات البكسل واحد لكل بكسل في الصورة. (الرسم البياني للصورة هو تمثيل رسومي لتوزيع الدرجة اللونية في صورة رقمية. ويحتوي على جميع قيم السطوع الموجودة في الصورة. ويرسم عدد وحدات البكسل لكل قيمة سطوع. ويساعد في إجراء إعدادات التعريض الضوئي.) من صورة استيراد PIL Python
       def   main  ():   try  :   #Relative Path   img   =   Image  .  open  (  'picture.webp'  )   #Getting histogram of image   print   img  .  histogram  ()   except   IOError  :   pass   if   __name__   ==   '__main__'  :   main  ()   
    الحصول على رسم بياني للصورة في نسخة بيثون


  • نقل الصورة: هذه الميزة تعطينا صورة معكوسة للصورة Python
        from   PIL   import   Image   def   main  ():   try  :   #Relative Path   img   =   Image  .  open  (  'picture.webp'  )   #transposing image    transposed_img   =   img  .  transpose  (  Image  .  FLIP_LEFT_RIGHT  )   #Save transposed image   transposed_img  .  save  (  'transposed.webp'  )   except   IOError  :   pass   if   __name__   ==   '__main__'  :   main  ()   
    نقل الصورة في بايثون
  • تقسيم الصورة إلى نطاقات فردية: يؤدي تقسيم الصورة في وضع RGB إلى إنشاء ثلاث صور جديدة تحتوي كل منها على نسخة من النطاقات الفردية الأصلية. Python
       from   PIL   import   Image   def   main  ():   try  :   #Relative Path   img   =   Image  .  open  (  'picture.webp'  )   #splitting the image   print   img  .  split  ()   except   IOError  :   pass   if   __name__   ==   '__main__'  :   main  ()   
    تقسيم الصورة في بيثون
  • خريطة الموقع: تحويل صورة إلى صورة نقطية X11 (تنسيق صورة ثنائي للنص العادي). تقوم بإرجاع سلسلة تحتوي على صورة نقطية X11 ولا يمكن استخدامها إلا لصور الوضع 1، أي صور بالأبيض والأسود بحجم 1 بت بكسل. من صورة استيراد PIL Python
       def   main  ():   try  :   #Relative Path   img   =   Image  .  open  (  'picture.webp'  )   print   img  .  mode   #converting image to bitmap   print   img  .  tobitmap  ()   print   type  (  img  .  tobitmap  ())   except   IOError  :   pass   if   __name__   ==   '__main__'  :   main  ()   
    تحويل الصورة إلى صورة نقطية في بيثون تحويل الصورة إلى bitmao في بايثون
  • إنشاء صورة مصغرة: تقوم هذه الطريقة بإنشاء صورة مصغرة للصورة المفتوحة. ولا يقوم بإرجاع كائن صورة جديد، بل يقوم بإجراء تعديل موضعي على كائن الصورة المفتوح حاليًا نفسه. إذا كنت لا تريد تغيير كائن الصورة الأصلي، فقم بإنشاء نسخة ثم قم بتطبيق هذه الطريقة. تقوم هذه الطريقة أيضًا بتقييم مدى ملاءمة الحفاظ على نسبة العرض إلى الارتفاع للصورة وفقًا للحجم الذي تم تمريره. من صورة استيراد PIL Python
       def   main  ():   try  :   #Relative Path   img   =   Image  .  open  (  'picture.webp'  )   #In-place modification   img  .  thumbnail  ((  200     200  ))   img  .  save  (  'thumb.webp'  )   except   IOError  :   pass   if   __name__   ==   '__main__'  :   main  ()   
    إنشاء صورة مصغرة للصورة في بيثون
إنشاء اختبار