프로젝트 소개

pyvips는 cffi로 구현된 libvips 이미지 처리 라이브러리의 Python 바인딩입니다. libvips를 래핑하여 Python 프로그램이 해당 연산을 사용할 수 있게 하며, Windows, macOS, Linux의 python3와 pypy3에서 누수 없이 vips 테스트 스위트를 통과합니다. 작동 방식 pyvips를 사용하는 프로그램은 이미지를 직접 조작하지 않습니다. 대신 소스 이미지를 기반으로 구축된 이미지 처리 연산 파이프라인을 생성합니다. 파이프의 끝이 목적지에 연결되면 전체 파이프라인이 한 번에 실행되어, 이미지를 소스에서 목적지로 섹션 단위로 병렬 스트리밍합니다. 병렬이기 때문에 빠르고, 전체 이미지를 메모리에 유지할 필요가 없기 때문에 가볍습니다. README는 libvips 속도 및 메모리 벤치마크를 인용하는데, 대용량 TIFF를 로드하고 10% 축소하고 샤프닝한 뒤 다시 저장하는 테스트가 일반적으로 ImageMagick보다 약 3배 빠르고 약 5배 적은 메모리를 필요로 합니다. 설치 가장 빠른 방법은 바이너리 패키지입니다: pip install "pyvips[binary]". 이는 가장 일반적으로 필요한 라이브러리를 포함한 자체 완결형 패키지를 설치하며, 64비트 및 32비트 x64와 ARM CPU를 포함하여 Linux, Windows, macOS 등 대부분의 플랫폼에서 작동합니다. 번들된 libvips는 PDF 로드 및 OpenSlide 지원과 같은 기능이 없습니다. 또는 libvips를 별도로 설치합니다. 라이브러리 검색 경로에 libvips 공유 라이브러리 버전 8.2 이상이 필요하며, 모든 기능을 위해서는 최소 8.9가 필요합니다. 예를 들어 Linux에서는 apt install libvips-dev 후 pip install pyvips; Python 3.11 이상에서는 먼저 venv가 필요합니다. Homebrew를 사용하는 macOS에서는 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 컴파일러가 있으면, 모듈은 cffi API 모드를 사용하여 Python용 libvips 바이너리 확장을 빌드합니다. 바이너리 확장을 빌드할 수 없으면 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에서 열거형 재생성, 타입 스텁 재생성, autodocs 재생성, 버전 번호 업데이트, PyPI 패키지 빌드 및 업로드가 포함됩니다.