{"id":13438581,"url":"https://github.com/libvips/libvips","last_synced_at":"2025-05-12T05:28:41.595Z","repository":{"id":1345160,"uuid":"1291410","full_name":"libvips/libvips","owner":"libvips","description":"A fast image processing library with low memory needs.","archived":false,"fork":false,"pushed_at":"2025-05-11T10:20:54.000Z","size":159231,"stargazers_count":10284,"open_issues_count":76,"forks_count":699,"subscribers_count":139,"default_branch":"master","last_synced_at":"2025-05-12T02:43:31.920Z","etag":null,"topics":["c","cpp","gif","graphicsmagick","heic","image-processing","imagemagick","jpeg","libvips","nifti","openexr","openslide","pdf","pdfium","png","svg","tiff","webp"],"latest_commit_sha":null,"homepage":"https://libvips.github.io/libvips/","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/libvips.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"open_collective":"libvips"}},"created_at":"2011-01-25T13:15:00.000Z","updated_at":"2025-05-12T01:40:23.000Z","dependencies_parsed_at":"2023-12-24T22:35:11.657Z","dependency_job_id":"724aa845-bc29-40ec-a7c4-a6636d8f6915","html_url":"https://github.com/libvips/libvips","commit_stats":{"total_commits":7493,"total_committers":121,"mean_commits":"61.925619834710744","dds":0.1565461097023889,"last_synced_commit":"b6428d89f35240d9c6ce92aa7d1c58db1cef9114"},"previous_names":[],"tags_count":118,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libvips%2Flibvips","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libvips%2Flibvips/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libvips%2Flibvips/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libvips%2Flibvips/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/libvips","download_url":"https://codeload.github.com/libvips/libvips/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253672706,"owners_count":21945481,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c","cpp","gif","graphicsmagick","heic","image-processing","imagemagick","jpeg","libvips","nifti","openexr","openslide","pdf","pdfium","png","svg","tiff","webp"],"created_at":"2024-07-31T03:01:06.637Z","updated_at":"2025-05-12T05:28:41.565Z","avatar_url":"https://github.com/libvips.png","language":"C","readme":"# libvips: an image processing library\n\n[![CI](https://github.com/libvips/libvips/workflows/CI/badge.svg)](https://github.com/libvips/libvips/actions)\n[![Fuzzing Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/libvips.svg)](https://issues.oss-fuzz.com/issues?q=is:open%20project:libvips)\n[![Coverity Status](https://scan.coverity.com/projects/6503/badge.svg)](https://scan.coverity.com/projects/jcupitt-libvips)\n[![Gitter](https://badges.gitter.im/libvips/devchat.svg)](https://gitter.im/libvips/devchat?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge)\n\n# Introduction\n\nlibvips is a [demand-driven, horizontally\nthreaded](https://github.com/libvips/libvips/wiki/Why-is-libvips-quick)\nimage processing library. Compared to similar\nlibraries, [libvips runs quickly and uses little\nmemory](https://github.com/libvips/libvips/wiki/Speed-and-memory-use).\nlibvips is licensed under the [LGPL-2.1-or-later](\nhttps://spdx.org/licenses/LGPL-2.1-or-later).\n\nIt has around [300\noperations](https://libvips.github.io/libvips/API/current/func-list.html)\ncovering arithmetic, histograms, convolution, morphological\noperations, frequency filtering, colour, resampling,\nstatistics and others. It supports a large range of [numeric\ntypes](https://libvips.github.io/libvips/API/current/VipsImage.html#VipsBandFormat),\nfrom 8-bit int to 128-bit complex. Images can have any number of bands.\nIt supports a good range of image formats, including JPEG, JPEG 2000, JPEG XL,\nTIFF, PNG, WebP, HEIC, AVIF, FITS, Matlab, OpenEXR, PDF, SVG, HDR, PPM / PGM /\nPFM, CSV, GIF, Analyze, NIfTI, DeepZoom, and OpenSlide. It can also load\nimages via ImageMagick or GraphicsMagick, letting it work with formats\nlike DICOM.\n\nIt comes with bindings for\n[C](https://libvips.github.io/libvips/API/current/using-from-c.html),\n[C++](https://libvips.github.io/libvips/API/current/libvips-from-C++.html),\nand the\n[command-line](https://libvips.github.io/libvips/API/current/using-cli.html).\nFull bindings are available for :\n\n| Language | Binding |\n|---|---|\n| Ruby | [ruby-vips](https://rubygems.org/gems/ruby-vips) |\n| Python | [pyvips](https://pypi.python.org/pypi/pyvips) |\n| PHP | [php-vips](https://github.com/libvips/php-vips) |\n| C# / .NET | [NetVips](https://www.nuget.org/packages/NetVips) |\n| Go | [govips](https://github.com/davidbyttow/govips) |\n| Lua | [lua-vips](https://github.com/libvips/lua-vips) |\n| Crystal | [crystal-vips](https://github.com/naqvis/crystal-vips) |\n| Elixir | [vix](https://github.com/akash-akya/vix) |\n| JVM | [vips-ffm](https://github.com/lopcode/vips-ffm) |\n\nlibvips is used as an image processing engine by:\n\n| |\n|---|\n| [sharp (on node.js)](https://www.npmjs.org/package/sharp) |\n| [imgproxy](https://github.com/imgproxy/imgproxy) |\n| [bimg](https://github.com/h2non/bimg) |\n| [sharp for Go](https://github.com/DAddYE/vips) |\n| [Ruby on Rails](https://edgeguides.rubyonrails.org/active_storage_overview.html) |\n| [CarrierWave](https://github.com/carrierwaveuploader/carrierwave#using-vips) |\n| [mediawiki](https://www.mediawiki.org/wiki/Extension:VipsScaler) |\n| [PhotoFlow](https://github.com/aferrero2707/PhotoFlow) |\n| [JVips](https://github.com/criteo/JVips) |\n\nand others. The official libvips GUI is\n[nip2](https://github.com/libvips/nip2), a strange combination of a\nspreadsheet and a photo editor.\n\n# Install\n\nThere are packages for most Unix-like operating systems, including\nmacOS. Check your package manager.\n\nThere are binaries for Windows in\n[releases](https://github.com/libvips/libvips/releases).\n\nThe [libvips website](https://libvips.github.io/libvips) has [detailed\ninstall notes](https://libvips.github.io/libvips/install.html).\n\n# Building from source\n\nlibvips uses the [Meson build system](https://mesonbuild.com), version 0.56\nor later. Meson can use [`ninja`](https://ninja-build.org), Visual Studio or\nXCode as a backend, so you'll also need one of them.\n\nlibvips must have `build-essential`, `pkg-config`, `libglib2.0-dev`,\n`libexpat1-dev`.  See the **Dependencies** section below for a full list\nof the libvips optional dependencies.\n\nThere are basic bash completions in `completions/`, see the README in there.\n\n## Cheatsheet\n\n```\ncd libvips-x.y.x\nmeson setup build --prefix /my/install/prefix\ncd build\nmeson compile\nmeson test\nmeson install\n```\n\nCheck the output of `meson setup` carefully and make sure it found everything\nyou wanted it to find.  Add arguments to `meson setup` to change the build\nconfiguration.\n\n- Add flags like `-Dnsgif=false` to turn libvips options on and off, see\n  `meson_options.txt` for a list of all the build options libvips supports.\n\n- Add flags like `-Dmagick=disabled` to turn libvips dependencies on and off,\n  see `meson_options.txt` and the list below for a summary of all the libvips\n  dependencies.\n\n- You might need to add `--libdir lib` on Debian if you don't want the arch\n  name in the library path.\n\n- Add `--default-library static` for a static build.\n\n- Use e.g. `CC=clang CXX=clang++ meson setup ...` to change compiler.\n\n- You can have an alternative build directory, pick whatever names you like,\n  for example one for release and one for debug.\n\nThere's a more comprehensive test suite you can run once libvips has been\ninstalled. Use `pytest` in the libvips base directory.\n\n## Optional dependencies\n\nIf suitable versions are found, libvips will add support for the following\nlibraries automatically. Packages are generally found with `pkg-config`,\nso make sure that is working.\n\n### libjpeg\n\nAnything that is compatible with the IJG JPEG library. Use `mozjpeg` if you\ncan. Another option is `libjpeg-turbo`.\n\n### libexif\n\nIf available, libvips adds support for EXIF metadata in JPEG files.\n\n### librsvg\n\nThe usual SVG loader. If this is not present, vips will try to load SVGs\nvia imagemagick instead.\n\n### PDFium\n\nIf present, libvips will attempt to load PDFs with PDFium. Download the\nprebuilt pdfium binary from:\n\n    https://github.com/bblanchon/pdfium-binaries\n\nUntar to the libvips install prefix, for example:\n\n    cd ~/vips\n    tar xf ~/pdfium-linux.tgz\n\nCreate a `pdfium.pc` like this (update the version number):\n\n    VIPSHOME=/home/john/vips\n    cat \u003e $VIPSHOME/lib/pkgconfig/pdfium.pc \u003c\u003c EOF\n         prefix=$VIPSHOME\n         exec_prefix=\\${prefix}\n         libdir=\\${exec_prefix}/lib\n         includedir=\\${prefix}/include\n         Name: pdfium\n         Description: pdfium\n         Version: 4290\n         Requires:\n         Libs: -L\\${libdir} -lpdfium\n         Cflags: -I\\${includedir}\n    EOF\n\nIf PDFium is not detected, libvips will look for `poppler-glib` instead.\n\n### poppler-glib\n\nThe Poppler PDF renderer, with a glib API. If this is not present, vips\nwill try to load PDFs via imagemagick.\n\n### cgif\n\nIf available, libvips will save GIFs with\n[cgif](https://github.com/dloebl/cgif). If this is not present, vips will\ntry to save gifs via imagemagick instead.\n\n### libarchive\n\nIf available, libvips adds support for creating image pyramids with `dzsave`.\n\n### libtiff\n\nThe TIFF library. It needs to be built with support for JPEG and\nZIP compression. 3.4b037 and later are known to be OK.\n\n### fftw3\n\nIf libvips finds this library, it uses it for fourier transforms.\n\n### lcms2\n\nIf present, `vips_icc_import()`, `vips_icc_export()` and `vips_icc_transform()`\ncan be used to manipulate images with ICC profiles.\n\n### libspng\n\nIf present, libvips will load and save PNG files using libspng. If not, it\nwill look for the standard libpng package.\n\n### libimagequant, quantizr\n\nIf one of these quantisation packages is present, libvips can write 8-bit\npalette-ised PNGs and GIFs.\n\n### ImageMagick, or optionally GraphicsMagick\n\nIf available, libvips adds support for loading and saving all\nlibMagick-supported image file types. You can enable and disable load and save\nseparately.\n\nImagemagick 6.9+ needs to have been built with `--with-modules`. Most packaged\nIMs are, I think.\n\nIf you are going to be using libvips with untrusted images, perhaps in a\nweb server, for example, you should consider the security implications of\nenabling a package with such a large attack surface.\n\n### pangocairo\n\nIf available, libvips adds support for text rendering. You need the\npackage pangocairo in `pkg-config --list-all`.\n\n### highway\n\nIf present, libvips will accelerate some operations with SIMD. If not, it\nwill look for the orc-0.4 package.\n\n### matio\n\nIf available, vips can load images from Matlab save files.\n\n### cfitsio\n\nIf available, vips can load FITS images.\n\n### libwebp\n\nIf available, vips can load and save WebP images.\n\n### libniftiio\n\nIf available, vips can load and save NIfTI images.\n\n### OpenEXR\n\nIf available, libvips will directly read (but not write, sadly)\nOpenEXR images.\n\n### OpenJPEG\n\nIf available, libvips will read and write JPEG2000 images.\n\n### libjxl\n\nIf available, libvips will read and write JPEG-XL images.\n\n### OpenSlide\n\nIf available, libvips can load OpenSlide-supported virtual slide\nfiles: Aperio, Hamamatsu, Leica, MIRAX, Sakura, Trestle, and Ventana.\n\n### libheif\n\nIf available, libvips can load and save HEIC and AVIF images. Your libheif (in\nturn) needs to be built with the correct decoders and encoders. You can check\nwith eg.:\n\n```console\n$ heif-convert --list-decoders\nHEIC decoders:\n- libde265 = libde265 HEVC decoder, version 1.0.9\nAVIF decoders:\n- dav1d = dav1d v6.6.0\n- aom = AOMedia Project AV1 Decoder v3.5.0\n$ heif-enc --list-encoders\nHEIC encoders:\n- x265 = x265 HEVC encoder (3.5+1-f0c1022b6) [default]\nAVIF encoders:\n- aom = AOMedia Project AV1 Encoder v3.5.0 [default]\n- svt = SVT-AV1 encoder v1.1.0\n- rav1e = Rav1e encoder\n```\n\n# Contributors\n\n### Code Contributors\n\nThis project exists thanks to all the people who contribute.\n\n\u003ca href=\"https://github.com/libvips/libvips/graphs/contributors\"\u003e\u003cimg src=\"https://opencollective.com/libvips/contributors.svg?width=890\u0026button=false\" /\u003e\u003c/a\u003e\n\n### Organizations\n\nWe've had generous financial support from our sponsors. Thank you very much!\n\n\u003cimg src=\"https://opencollective.com/libvips/sponsors.svg?width=890\u0026button=false\" /\u003e\n","funding_links":["https://opencollective.com/libvips"],"categories":["C","HarmonyOS","Sensor Processing","其他_机器视觉","Geospatial Library","Images"],"sub_categories":["Windows Manager","Image Processing","网络服务_其他","C"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flibvips%2Flibvips","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flibvips%2Flibvips","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flibvips%2Flibvips/lists"}