Y
HN Search
Hacker News Search
new
|
comments
|
top
|
jobs
jcupitt
searching Neon…
1.
▲
2.
▲
3.
▲
4.
▲
5.
▲
6.
▲
5 ms
·
1.
▲
by
jcupitt
12d ago
The fix is pretty easy -- you should call `block_untrusted` to stop loaders like matlab from running: https://www.rubydoc.info/gems/ruby-vips/Vips.block_untrusted You can also set the env var `VIPS_BLOCK_UNTRUSTED
2.
▲
by
jcupitt
2mo ago
libvips shouldn't be calling imagemagick for heif decode, it has a nice one built in. Unless you were using a very old libvips! I've found jemalloc works best for long running libvips processes, fwiw.
3.
▲
by
jcupitt
2mo ago
Hello, looks nice! I had a few thoughts: - I'd consider adding support for libvips smartcrop, ICC colour management, HDR, image alpha - can you join pipelines? you could have one making a background, one making a foreground, then compo
4.
▲
by
jcupitt
4mo ago
Some packages with native code components (like sharp) will use these hooks to download the correct precompiled native binary for you.
5.
▲
by
jcupitt
4mo ago
sharp downloads over https and checks the sha256 (I think?) of the archive.
6.
▲
by
jcupitt
4mo ago
sharp does this too: https://sharp.pixelplumbing.com/install/#prebuilt-binaries it can sometimes need to compile the C++ shim that sits between node and libvips, but that's rare.
7.
▲
by
jcupitt
4mo ago
sharp does not rebuild libvips, it downloads a pre-compiled libvips for your platform. https://sharp.pixelplumbing.com/install/#prebuilt-binaries It can usually also download a precompiled binary for the C++ shim that
8.
▲
by
jcupitt
6mo ago
Hello, libvips author here, you can get it to do the OKLab averaging for you. For example, using pyvips (ahem, untested): image = pyvips.Image.new_from_file(filename, access="sequential") scale = min(200 / image.width, 200 &#
9.
▲
by
jcupitt
7mo ago
libvips uses imagemagick (via libMagick) for BMP load and save, fwiw
10.
▲
by
jcupitt
9mo ago
It's just `vips copy src.heic dst.jpg`.
11.
▲
by
jcupitt
9mo ago
libvips, the library behind sharp, has just released version 8.18.0: https://www.libvips.org/2025/12/04/What's-new-in-8.18.html It includes support for UltraHDR (HDR and SDR in one JPEG file), camera RAW
12.
▲
by
jcupitt
1y ago
Cleanup can be very useful if you depend on a library that does not support arenas.
13.
▲
by
jcupitt
1y ago
`free(NULL);` will crash on some platforms that gcc supports, I believe.
14.
▲
by
jcupitt
1y ago
I'm the libvips author, I should have said, so I'm not very neutral. But at least on that test it's usefully quicker and less memory hungry.
15.
▲
by
jcupitt
1y ago
pyvips (the libvips Python binding) is quite a bit better than pillow-simd --- 3x faster, 10x less memory use, same quality. On this benchmark at least: https://github.com/libvips/libvips/wiki/Speed-and-memory
16.
▲
by
jcupitt
1y ago
Ah no problem! I'm glad it's useful. `govips` was a pretty early binding and wasn't really done the libvips way. It doesn't expose all the operations or options, it's mostly done by hand, and there are a number of l
17.
▲
by
jcupitt
1y ago
Hello, libvips author here, the JPEG loader has a flag to do this for you. You can write: VipsImage *image = vips_image_new_from_file("something.jpg", "autorotate", TRUE, NULL); and it'll flip it upright for you and
18.
▲
by
jcupitt
1y ago
Applying rotation can have a large performance penalty (both cpu and memory), so you want to be able to avoid it if possible.
19.
▲
by
jcupitt
1y ago
Those three all use libvips as the image processing engine, fwiw, so it's maybe not a very wide survey. libvips is fairly highly threaded and does a lot of alloc/free, so it's challenging for most heap implementations.
20.
▲
by
jcupitt
1y ago
Hello, libvips author here. This is probably the canonical thread about libvips and memory fragmentation, and the funniest graph: https://github.com/lovell/sharp/issues/955#issuecomment-5458... (that specific
21.
▲
by
jcupitt
1y ago
The wasm build of libvips (the image processing library this thing uses) does not include HEIC because of the various patent issues: https://github.com/kleisauke/wasm-vips/issues/3 It does support AVIF and JX
22.
▲
by
jcupitt
2y ago
Although I think this technique was well known before then -- Crosfield were using channel-independent histogram normalization to restore faded transparencies back in the 80s.
23.
▲
by
jcupitt
2y ago
libvips dev here -- the CLI interface is deliberately really basic, you'll see much better performance and flexibility with one of the language bindings. pyvips works well: https://github.com/libvips/pyvips The id
24.
▲
by
jcupitt
2y ago
imagemagick 7 (the current version) is namespaced under "magick", fwiw
25.
▲
by
jcupitt
2y ago
I made an image viewer for large images: https://github.com/jcupitt/vipsdisp It should be fine with your huge PNGs. Internally it's a bit like a tiled map viewer, but it makes the tiles as you view the image with
26.
▲
by
jcupitt
2y ago
nip2 does this. It's a little like a spreadsheet, but cells can contain images, matrices, text, widgets, stuff like that. You can add scraps of code to link them together (just like a spreadsheet). https://github.com/li
27.
▲
by
jcupitt
3y ago
We're off topic here, but in pyvips (for example) you can do text overlays like this: https://github.com/libvips/pyvips/blob/master/examples/annot... tldr: make an image containing your text, c
28.
▲
by
jcupitt
4y ago
Firefox and webkit also have JXL support. Like Chrome, the FF version is behind a flag. The webkit one is a build-time option.
29.
▲
by
jcupitt
4y ago
It's actually the other way around: WebP images are about the same size as JPEG encoded with mozjpeg -- compression is no better. WebP does have advantages for images with transparency. Google effectively abandoned webp more than five
30.
▲
by
jcupitt
4y ago
I use tiled TIFF with jpeg compression for things like this. You get good compression, support for huge sizes, and wide compatibility. TIFF supports image pyramids too, so you can even get good interactive performance. No direct web browser
More ›