logo

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

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() 
    تدوير الصورة في بايثون' src='//techcodeview.com/img/python/71/working-with-images-in-python.webp' title=ملاحظة: تتوفر علامة توسيع اختيارية كأحد وسيطات طريقة التدوير والتي إذا تم ضبطها على "صحيح" فإنها تعمل على توسيع الصورة الناتجة لجعلها كبيرة بما يكفي لاستيعاب الصورة التي تم تدويرها بالكامل. كما هو موضح في مقتطف الكود أعلاه، فقد استخدمت مسارًا نسبيًا حيث توجد صورتي في نفس الدليل مثل ملف كود بايثون الخاص بي، ويمكن استخدام المسار المطلق أيضًا.
  • اقتصاص صورة: يأخذ 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() 
    قص الصورة في بايثون' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-1.webp' title=
  • تغيير حجم الصورة: 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() 
    تغيير حجم الصورة في بيثون' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-2.webp' title=
  • لصق صورة على صورة أخرى: يمكن أن تكون الوسيطة الثانية صفًا مزدوجًا (تحديد الزاوية اليسرى العليا) أو صفًا رباعيًا (يسارًا أعلى يمينًا أسفل) - في هذه الحالة يجب أن يتطابق حجم الصورة الملصقة مع حجم منطقة المربع هذه أو لا شيء وهو ما يعادل (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. 
    لصق صورة على أخرى في بايثون' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-3.webp' title=
  • الحصول على رسم بياني للصورة: سيؤدي هذا إلى إرجاع رسم بياني للصورة كقائمة بعدد وحدات البكسل واحد لكل بكسل في الصورة. (الرسم البياني للصورة هو تمثيل رسومي لتوزيع الدرجة اللونية في صورة رقمية. ويحتوي على جميع قيم السطوع الموجودة في الصورة. ويرسم عدد وحدات البكسل لكل قيمة سطوع. ويساعد في إجراء إعدادات التعريض الضوئي.) من صورة استيراد 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() 
    الحصول على رسم بياني للصورة في نسخة بيثون' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-4.webp' title=


  • نقل الصورة: هذه الميزة تعطينا صورة معكوسة للصورة 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() 
    نقل الصورة في بايثون' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-5.webp' title=
  • تقسيم الصورة إلى نطاقات فردية: يؤدي تقسيم الصورة في وضع 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() 
    تقسيم الصورة في بيثون' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-6.webp' title=
  • خريطة الموقع: تحويل صورة إلى صورة نقطية 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() 
    تحويل الصورة إلى صورة نقطية في بيثون' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-7.webp' title= تحويل الصورة إلى bitmao في بايثون' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-8.webp' title=
  • إنشاء صورة مصغرة: تقوم هذه الطريقة بإنشاء صورة مصغرة للصورة المفتوحة. ولا يقوم بإرجاع كائن صورة جديد، بل يقوم بإجراء تعديل موضعي على كائن الصورة المفتوح حاليًا نفسه. إذا كنت لا تريد تغيير كائن الصورة الأصلي، فقم بإنشاء نسخة ثم قم بتطبيق هذه الطريقة. تقوم هذه الطريقة أيضًا بتقييم مدى ملاءمة الحفاظ على نسبة العرض إلى الارتفاع للصورة وفقًا للحجم الذي تم تمريره. من صورة استيراد 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() 
    إنشاء صورة مصغرة للصورة في بيثون' loading='lazy' src='//techcodeview.com/img/python/71/working-with-images-in-python-9.webp' title=
إنشاء اختبار