|
1 | 1 | # Image |
2 | 2 |
|
3 | | -`Image` is a fast, memory-efficient image processing library for Elixir. It is a high-level wrapper around [Vix](https://hex.pm/packages/vix), the Elixir bindings for the [libvips](https://www.libvips.org) C library, and provides an idiomatic functional API for image manipulation, drawing, text rendering, EXIF/XMP metadata, video frame extraction (via Xav/FFmpeg), QR code encoding and decoding (via eVision), blurhash, perceptual hashing, and many other image-related operations. |
| 3 | +`Image` is a fast, memory-efficient image processing library for Elixir. It is a high-level wrapper around [Vix](https://hex.pm/packages/vix), the Elixir bindings for the [libvips](https://www.libvips.org) C library, and provides an idiomatic functional API for image manipulation, drawing, text rendering, EXIF/XMP metadata, video frame extraction (via Xav/FFmpeg), blurhash, perceptual hashing, and many other image-related operations. |
4 | 4 |
|
5 | 5 | Machine-learning features (object detection, image classification, image generation) live in the companion [`image_detection`](https://hex.pm/packages/image_detection) library, which depends on `:image` and pulls in [Bumblebee](https://hex.pm/packages/bumblebee) and [Nx](https://hex.pm/packages/nx) as its own optional dependencies. |
6 | 6 |
|
@@ -36,7 +36,7 @@ Documentation can be found at <https://hexdocs.pm/image>. |
36 | 36 |
|
37 | 37 | * `Image.Video` (frame extraction, seek, webcam) via [Xav](https://hex.pm/packages/xav), an Elixir wrapper around FFmpeg. Requires FFmpeg ≥ 6.0 on the system. |
38 | 38 |
|
39 | | - * `Image.QRcode` (encode + decode) via [eVision](https://hex.pm/packages/evision). |
| 39 | + * QR code encoding and decoding via the sibling [`image_qrcode`](https://hex.pm/packages/image_qrcode) package (Nayuki QR-Code-generator + quirc; no `:evision` dependency). |
40 | 40 |
|
41 | 41 | * `Image.k_means` via [Scholar](https://hex.pm/packages/scholar). |
42 | 42 |
|
@@ -159,12 +159,7 @@ exif[:make] |
159 | 159 |
|
160 | 160 | ### QR codes |
161 | 161 |
|
162 | | -```elixir |
163 | | -{:ok, qrcode} = Image.QRcode.encode("Hello world", size: 256) |
164 | | -{:ok, "Hello world"} = Image.QRcode.decode(qrcode) |
165 | | -``` |
166 | | - |
167 | | -(Requires the optional `:evision` dependency.) |
| 162 | +QR encoding and decoding live in the sibling [`image_qrcode`](https://hex.pm/packages/image_qrcode) package — add it to your deps and call `Image.QRCode.encode/2` / `Image.QRCode.decode/1`. The earlier in-tree `Image.QRcode` module (which depended on `:evision`) was removed in 0.67.0; `image_qrcode` is a drop-in replacement built on Nayuki's QR-Code-generator and `quirc`, with no `:evision` requirement. |
168 | 163 |
|
169 | 164 | ### Pattern-matching errors |
170 | 165 |
|
@@ -243,7 +238,8 @@ optional dependencies enable specific features: |
243 | 238 | | `:nx` | `Image.to_nx/2`, `Image.from_nx/1`, tensor interop | |
244 | 239 | | `:scholar` | `Image.k_means/2` | |
245 | 240 | | `:xav` | `Image.Video` (FFmpeg-backed frame extraction) | |
246 | | -| `:evision` | `Image.QRcode`, `Image.to_evision/2`, `Image.from_evision/1` | |
| 241 | +| `:evision` | `Image.to_evision/2`, `Image.from_evision/1` (Mat ↔ Vimage interop) | |
| 242 | +| `:image_qrcode` | QR code encoding and decoding (sibling package — drop-in for the removed `Image.QRcode`) | |
247 | 243 | | `:image_detection` | `Image.Detection`, `Image.Classification`, `Image.Generation` (object detection, classification, image generation — pulls Bumblebee, Nx, Axon as its own transitive deps) | |
248 | 244 | | `:plug` | streaming via `Plug.Conn` | |
249 | 245 | | `:req` | streaming over HTTP | |
|
0 commit comments