Pillow کتابخانه اصلی تصویربرداری پایتون است
Pillow چنگال مدرن و فعال کتابخانه تصویربرداری پایتون (PIL) است. عملکرد اصلی آن ارائه قابلیتهای پردازش تصویر قوی و کارآمد مستقیماً در اسکریپتهای پایتون است. میتوانید بدون تکیه بر ویرایشگرهای خارجی، دهها فرمت تصویر را باز، دستکاری، فیلتر، بهبود و ذخیره کنید. به عنوان مثال، تبدیل 100 عکس JPEG به PNG و تغییر اندازه آنها به 50% کمتر از 2 ثانیه طول می کشد. با عملیات بالش بهینه.
اگر نیاز به انجام عملیات دستهای، اضافه کردن واترمارک، استخراج ابرداده یا ایجاد تصاویر کوچک به صورت برنامهریزی دارید، Pillow پاسخ مستقیم است. بیش از 70 درصد از کارهای اتوماسیون پردازش تصویر مبتنی بر پایتون از Pillow به عنوان کتابخانه اصلی خود استفاده می کنند. ، طبق آمار دانلود PyPI.
برای استفاده مؤثر از Pillow، باید گردش کار اصلی آن را درک کنید: باز → فرآیند → ذخیره. در زیر یک پیاده سازی عملی با نمونه های کد واقعی آورده شده است.
اجرا کنید Pip install Pillow . تایید با python -c "از PIL impیاt Image; print(Image.__version__)" . نصب معمولی کمتر از 30 ثانیه طول می کشد روی یک اتصال پهن باند استاندارد
img = Image.open("input.jpg").convert("RGB") - برای ثبات ضروری است. img.thumbnail((800، 800)) - حفظ نسبت، بدون اعوجاج. برای فایل در os.listdir ("پوشه"): img.save("output.png", optimize=True, quality=85) – کاهش حجم فایل تا 40 درصد بدون افت کیفیت قابل مشاهده اسکریپت زیر تمام JPEG ها را در یک فهرست پردازش می کند و تصاویر کوچکی از 256x256 پیکسل ایجاد می کند و در عین حال ابرداده را حفظ می کند. در مقایسه با حلقه های متوالی غیربهینه سازی شده، زمان کل پردازش را 65 درصد کاهش می دهد با استفاده از عملیات در محل
از تصویر واردات PILواردات سیستم عاملبرای نام فایل در os.listdir ("اصلی"): if filename.endswith(.jpg"): img = Image.open(os.path.join("اصلی"، نام فایل)) img.thumbnail((256, 256)) img.save(f"thumbnails/{filename}", "JPEG", quality=85) print(f"Thumbnail created: {filename}") Pillow بیش از 50 عملکرد داخلی را در 8 دسته اصلی ارائه می دهد. در زیر یک جدول ساختاریافته است که عملکردهای اصلی، موارد استفاده معمولی و معیارهای عملکرد دنیای واقعی را نشان میدهد.
| دسته عملکرد | روش های کلیدی | استفاده معمولی | میانگین زمان (میلیثانیه) |
|---|---|---|---|
| تبدیل فرمت | .save(, format=) | PNG ↔ JPEG ↔ BMP | 12-35 |
| تبدیل های هندسی | .resize()، .rotate()، .crop() | ریز عکسها، تراز | 8-45 |
| عملیات رنگی | .convert()، .point() | مقیاس خاکستری، روشنایی | 3-10 |
| فیلتر و بهبود | ImageFilter، ImageEnhance | محو کردن، تیز کردن، کنتراست | 15-60 |
| طراحی و متن | ImageDraw.Draw() | واترمارک، حاشیه نویسی | 20-80 |
Pillow در مقایسه با راه حل های بومی پایتون، طول کد پردازش تصویر را به طور متوسط 73 درصد کاهش می دهد (به عنوان مثال، تکرار دستی پیکسل). به عنوان مثال، اعمال تاری گاوسی با پایتون بومی به 15 خط حلقه تو در تو نیاز دارد. با بالش، آن است img.filter(ImageFilter.GaussianBlur(radius=2)) - یک خط
بر اساس انجمنهای انجمن و مشکلات GitHub، اینها 6 سؤال متداول در مورد Pillow هستند که پاسخهای مستقیم و کاربردی دارند.
بله. استفاده کنید Image.open("animated.gif") و از طریق فریم ها با جستجو () . Pillow می تواند GIF های متحرک را بخواند و بنویسد و داده های زمان بندی را تا 1 میلی ثانیه با دقت حفظ کند. مثال: تمام فریم ها را استخراج کنید تا تصاویر را در کمتر از 0.5 ثانیه برای یک GIF 20 فریمی جدا کنید.
استفاده کنید Image.open().convert() و به صورت تکه تکه با .crop() . برای یک تصویر 100 مگاپیکسلی، بارگذاری تنبل Pillow در ابتدا فقط از 5 تا 10 مگابایت استفاده می کند. به جای بارگیری کل تصویر علاوه بر این، مشخص کنید تصویر.LANCZOS برای نمونه برداری پایین با کیفیت بالا که از نظر حافظه کارآمد است.
Pillow به طور بومی از بیش از 30 فرمت از جمله JPEG، PNG، TIFF، BMP، GIF، WebP و ICO پشتیبانی می کند. پشتیبانی از WebP در Pillow 25-35٪ فشرده سازی بهتری نسبت به JPEG با همان کیفیت ایجاد می کند (بر اساس مطالعات WebP گوگل). برای بررسی همه فرمت های پشتیبانی شده: از ویژگی های واردات PIL. features.get_supported() .
برای I/O اولیه و تبدیل های ساده (تغییر اندازه، برش، تبدیل فرمت)، بالش 15-30٪ سریعتر از OpenCV در همان سخت افزار است زیرا سربار کمتری دارد. برای دید کامپیوتری پیچیده (تشخیص ویژگی، تطبیق)، OpenCV برتر است. همیشه Pillow را برای اتوماسیون دسته ای پردازش تصویر انتخاب کنید.
استفاده کنید Image.alpha_composite() or .paste() با روکش شفاف دسته ای از 1000 تصویر (هر 2 مگابایت) را می توان در 45 ثانیه واترمارک کرد. با استفاده از روش های ساده برای حلقه و ترسیم Pillow. برای ساختار، نمونه کد را در بخش «نحوه استفاده» ببینید.
بله. تبدیل بین آرایه های Pillow و NumPy: np.array(img) و Image.fromarray(arr) . این ادغام در 85 درصد خطوط لوله تصویر علم داده استفاده می شود (نظرسنجی های کاگل، 2024). این امکان ترکیب یکپارچه سرعت I/O Pillow با عملیات ریاضی NumPy را فراهم می کند.
برای به حداکثر رساندن کارایی بالش، این دستورالعمل های مبتنی بر شواهد را دنبال کنید:
به طور خلاصه، Pillow راه حل قطعی برای پردازش تصویر پایتون است برای کارهایی که نیازی به ویدیوی بلادرنگ یا تبدیل سه بعدی ندارند. ترکیبی از سرعت (~ 0.2 ثانیه در هر تصویر 12 مگاپیکسلی برای عملیات های اساسی)، پشتیبانی از فرمت (30 نوع) و API تمیز آن را به استاندارد صنعتی برای اسکریپت های اتوماسیون، پشتیبان های وب و خطوط لوله آماده سازی داده تبدیل می کند.