libvips/libvips
A fast image processing library with low memory needs.
libvips: 이미지 처리 라이브러리
그것이 무엇인가
libvips는 이미지 처리(크기 조정, 자르기, 필터링, 형식 변환 및 기타 많은 작업)를 위한 라이브러리입니다. 주요 설계 특징은 수요 기반 및 수평 스레드화입니다. 즉, 실제로 요청한 작업만 수행하고 해당 작업을 여러 CPU 스레드로 분할합니다. README는 이로 인해 유사한 라이브러리보다 빠르고 메모리 효율적이라고 주장합니다.
오픈 소스이며 LGPL-2.1-or-later 라이선스입니다.
할 수 있는 것
- 약 300개의 연산: 산술, 히스토그램, 컨볼루션, 형태학적 연산, 주파수 필터링, 색상, 리샘플링, 통계 등을 포함합니다.
- 넓은 숫자 범위: 8비트 정수부터 128비트 복소수까지.
- 이미지당 임의의 밴드 수 (예: 그레이스케일, RGB, RGBA 등).
- 많은 이미지 형식: JPEG, JPEG 2000, JPEG XL, TIFF, PNG, WebP, HEIC, AVIF, FITS, Matlab, OpenEXR, PDF, SVG, HDR, PPM/PGM/PFM, CSV, GIF, Analyze, NIfTI, DeepZoom, OpenSlide. 또한 ImageMagick 또는 GraphicsMagick을 통해 이미지를 로드할 수 있어 DICOM과 같은 형식 지원이 확장됩니다.
언어 바인딩
C, C++ 및 명령줄 인터페이스용 내장 바인딩이 포함되어 있습니다. 전체 커뮤니티 바인딩은 다음과 같습니다:
- Ruby (ruby-vips)
- Python (pyvips)
- PHP (php-vips)
- C# / .NET (NetVips)
- Go (vips-gen)
- Lua (lua-vips)
- Crystal (crystal-vips)
- Elixir (vix)
- Java (vips-ffm)
- Nim (libvips-nim)
- Rust (vips-rs)
누가 사용하는가
libvips를 이미지 처리 엔진으로 사용하는 주목할 만한 프로젝트:
- Mastodon (소셜 네트워크)
- sharp (Node.js 이미지 라이브러리)
- imgproxy
- wsrv.nl
- bimg
- Ruby on Rails (Active Storage)
- CarrierWave
- MediaWiki
libvips의 공식 GUI는 nip4이며, "스프레드시트와 사진 편집기의 이상한 조합"으로 설명됩니다.
설치
- Unix 계열 시스템 (macOS 포함): 대부분의 패키지 관리자에서 패키지를 사용할 수 있습니다.
- Windows: 프로젝트의 GitHub 릴리스에서 사전 빌드된 바이너리가 제공됩니다.
- 자세한 설치 노트는 libvips 웹사이트에 있습니다.
소스에서 빌드
요구 사항:
- Meson 빌드 시스템 (버전 0.56 이상)
- Meson용 백엔드: ninja, Visual Studio 또는 XCode
- 핵심 종속성:
build-essential,pkg-config,libglib2.0-dev,libexpat1-dev
기본 빌드 단계:
cd libvips-x.y.z
meson setup build --prefix /my/install/prefix
cd build
meson compile
meson test
meson install
-Dnsgif=false 또는 -Dmagick=disabled와 같은 플래그로 기능과 종속성을 전환할 수 있습니다 (meson_options.txt 참조). 설치 후 pytest로 더 포괄적인 테스트 스위트를 실행할 수 있습니다.
선택적 종속성
libvips는 시스템에서 찾은 라이브러리에 대한 지원을 자동으로 활성화합니다. 주요 항목은 다음과 같습니다:
- libjpeg (또는 mozjpeg / libjpeg-turbo) — JPEG
- libultrahdr — UltraHDR 이미지
- libexif — JPEG의 EXIF 메타데이터
- librsvg — SVG 로딩 (ImageMagick으로 폴백)
- libraw — 카메라 RAW 로딩 (ImageMagick으로 폴백)
- PDFium 또는 poppler-glib — PDF 로딩 (ImageMagick으로 폴백)
- cgif — GIF 저장 (ImageMagick으로 폴백)
- libarchive —
dzsave를 통한 이미지 피라미드 - libtiff — TIFF
- fftw3 — 푸리에 변환
- lcms2 — ICC 프로필 조작
- libpng — PNG (spng로 폴백)
- libimagequant 또는 quantizr — 8비트 팔레트 PNG/GIF 쓰기
- ImageMagick 또는 GraphicsMagick — 광범위한 형식 지원 (README는 신뢰할 수 없는 이미지에 대해 이 기능을 활성화할 때의 보안 영향을 경고합니다)
- pangocairo — 텍스트 렌더링
- highway — SIMD 가속 (orc-0.4로 폴백)
- matio — Matlab 파일
- cfitsio — FITS 이미지
- libwebp — WebP
- libniftiio — NIfTI 이미지
- OpenEXR — OpenEXR 읽기 (쓰기 불가)
- OpenJPEG — JPEG 2000
- libjxl — JPEG XL
- OpenSlide — 가상 슬라이드 형식 (Aperio, Hamamatsu, Leica, MIRAX, Sakura, Trestle, Ventana)
- libheif — HEIC 및 AVIF (적절한 코덱으로 빌드된 libheif 필요)
요약
libvips는 수요 기반의 스레드 실행을 통해 속도와 낮은 메모리 사용을 우선시하는 성숙하고 널리 채택된 이미지 처리 라이브러리입니다. 방대한 형식과 연산을 지원하고, 대부분의 주요 언어에 대한 바인딩을 제공하며, 잘 알려진 프로젝트에서 프로덕션에 사용됩니다. 패키지 관리자로 설치하기 쉽고 Meson으로 소스에서 빌드하는 것도 간단합니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트