منصوبے کے بارے میں

pyvips libvips امیج پروسیسنگ لائبریری کے لیے Python بائنڈنگ ہے، جو cffi کے ساتھ نافذ کی گئی ہے۔ یہ libvips کو لپیٹتی ہے تاکہ Python پروگرام اس کے آپریشنز استعمال کر سکیں، اور یہ Windows، macOS اور Linux پر python3 اور pypy3 کے تحت بغیر لیک کے vips ٹیسٹ سوٹ پاس کرتی ہے۔ یہ کیسے کام کرتی ہے pyvips استعمال کرنے والے پروگرام تصاویر کو براہ راست تبدیل نہیں کرتے۔ اس کے بجائے وہ ایک ماخذ تصویر پر بنائی گئی امیج پروسیسنگ آپریشنز کی پائپ لائنز بناتے ہیں۔ جب پائپ کا اختتام منزل سے جڑ جاتا ہے، تو پوری پائپ لائن ایک ساتھ چلتی ہے، اور تصویر کو ماخذ سے منزل تک متوازی طور پر ایک وقت میں ایک حصہ اسٹریم کرتی ہے۔ چونکہ یہ متوازی ہے اس لیے یہ تیز ہے، اور چونکہ اسے پوری تصاویر میموری میں رکھنے کی ضرورت نہیں ہوتی اس لیے یہ ہلکی ہے۔ README libvips کی رفتار اور میموری بینچ مارک کا حوالہ دیتی ہے، جہاں ایک بڑی TIFF لوڈ کرنے، 10% سکڑنے، شارپ کرنے اور دوبارہ محفوظ کرنے والا ٹیسٹ عام طور پر ImageMagick سے تقریباً 3 گنا تیز ہوتا ہے اور تقریباً 5 گنا کم میموری درکار ہوتی ہے۔ انسٹالیشن سب سے تیز راستہ بائنری پیکیج ہے: pip install "pyvips[binary]"۔ یہ سب سے زیادہ عام طور پر درکار لائبریریوں کے ساتھ ایک خود مکتفی پیکیج انسٹال کرتا ہے اور زیادہ تر پلیٹ فارمز پر کام کرنا چاہیے، بشمول Linux، Windows اور macOS، 64 اور 32 بٹ x64 اور ARM CPUs کے ساتھ۔ بنڈل شدہ libvips میں PDF لوڈ اور OpenSlide سپورٹ جیسی خصوصیات نہیں ہیں۔ متبادل طور پر، libvips الگ سے انسٹال کریں۔ آپ کو اپنے لائبریری سرچ پاتھ پر libvips شیئرڈ لائبریری درکار ہے، ورژن 8.2 یا بعد کا، حالانکہ تمام خصوصیات کے لیے کم از کم 8.9 درکار ہے۔ Linux پر، مثال کے طور پر، apt install libvips-dev کے بعد pip install pyvips؛ Python 3.11 اور بعد کے ساتھ پہلے venv درکار ہے۔ macOS پر Homebrew کے ساتھ: brew install vips python pkg-config، پھر pip install pyvips۔ Windows پر، libvips ویب سائٹ سے پہلے سے کمپائل شدہ بائنری ڈاؤن لوڈ کریں، 64 بٹ Python استعمال کریں، اور یا تو vips-dev-x.y\bin کو PATH میں شامل کریں یا پروگرام کے اندر سے PATH سیٹ کریں (Python 3.8+ پر os.add_dll_directory استعمال کرتے ہوئے)۔ Conda پیکیج میں مماثل libvips بائنری شامل ہے: conda install --channel conda-forge pyvips۔ بلڈ موڈز اگر libvips کے ڈیولپمنٹ ہیڈرز انسٹال ہیں اور ایک کام کرنے والا C کمپائلر دستیاب ہے، تو ماڈیول آپ کے Python کے لیے libvips بائنری ایکسٹینشن بنانے کے لیے cffi API موڈ استعمال کرتا ہے۔ اگر یہ بائنری ایکسٹینشن نہیں بنا سکتا، تو یہ cffi ABI موڈ پر واپس آ جاتا ہے، جسے صرف libvips شیئرڈ لائبریری درکار ہوتی ہے؛ یہ شروع ہونے میں زیادہ وقت لیتا ہے اور عام طور پر عمل درآمد میں تقریباً 20% سست ہوتا ہے۔ API موڈ استعمال میں ہے یا نہیں یہ pyvips.API_mode سے چیک کیا جا سکتا ہے۔ مثال ایک نمونہ پروگرام ایک JPG کو ترتیب وار رسائی کے ساتھ لوڈ کرتا ہے، ہر سبز پکسل کی قدر کو دو سے ضرب دیتا ہے (image *= [1, 2, 1])، کنوولوشن ماسک کے ساتھ شارپ کرتا ہے، اور تصویر کو واپس فائل سسٹم پر لکھتا ہے۔ ڈیولپمنٹ نوٹس README مقامی ایڈیٹیبل انسٹالز کے لیے کمانڈز، tox کے ساتھ تمام ٹیسٹ چلانے، pytest کے ساتھ ٹیسٹ سوٹ یا مخصوص ٹیسٹ چلانے، پرفارمنس ٹیسٹ چلانے، flake8 کے ساتھ اسٹائل چیکنگ، اور sphinx-build کے ساتھ HTML دستاویزات بنانے کی فہرست دیتی ہے۔ ٹائپ ہنٹس PEP 561 اسٹب فائلوں (pyvips/__init__.pyi) کے ذریعے فراہم کیے جاتے ہیں، جو mypy کے ساتھ قابل استعمال ہیں، حالانکہ میتھڈز libvips آپشنز کے لیے صوابدیدی کی ورڈ آرگیومنٹس قبول کرتے ہیں جو ہو سکتا ہے ہنٹس میں مکمل طور پر شامل نہ ہوں۔ دیکھ بھال کے کاموں میں libvips GIR سے enums دوبارہ بنانا، ٹائپ اسٹبس دوبارہ بنانا، آٹوڈاکس دوبارہ بنانا، ورژن نمبرز اپ ڈیٹ کرنا، اور PyPI پیکیج بنانا اور اپ لوڈ کرنا شامل ہے۔