govips
lilliput
Our great sponsors
govips | lilliput | |
---|---|---|
5 | 5 | |
1,140 | 1,924 | |
- | 0.6% | |
7.1 | 6.3 | |
4 days ago | about 1 month ago | |
Go | C++ | |
MIT License | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
govips
-
Just In Time Image Optimization at Reddit Scale
We chose to use govips which is a cgo wrapper around the libvips image manipulation library. The majority of new development for services in our backend is written using baseplate.go. But Go is not an ideal choice for media processing as it cannot keep up with the performance of native code. The most widely used image-processing libraries like libmagick are primarily written in C or C++. Speed was a major factor in selecting libvips in order to keep latency low on CDN cache misses for images. In our tests, libvips was 3–4 times faster than libmagick on basic image processing operations. Content-aware smart cropping was implemented by porting smartcrop.js to Go. This is the only operation implemented in pure Go.
- Image manipulation with Go
-
Open source projects for beginner
Hi! You are willing to dive into some cgo we have a couple of feature requests :) https://github.com/davidbyttow/govips
- Show HN: Govips 2.0, lightning fast image processing for Go
lilliput
-
A look at how Discord uses Rust for their data services
We only have one service we've written in go that we maintain, which is the media proxy. We will probably rewrite that in Rust at some point - but it's not a priority, and more of a passion/side project. Most of that service is actually open sourced here: https://github.com/discord/lilliput - it's basically just a CGO wrapper around C/C++ image resizing code. The closed source bits are just the code that downloads and feeds images to that library, then serves the results back over http/grpc.
- Add support for animated WebP images by MCJack123 · Pull Request #103 · discord/lilliput · GitHub
-
Discord's image resizing framework (written in Go) doesn't support animated WebP. Is anyone willing to fix this?
The relevant issue: https://github.com/discord/lilliput/issues/97
-
Discord still doesn't support Animated WEBP, a format that's way better than GIF.
Our image resizing code is open source: https://github.com/discord/lilliput
What are some alternatives?
bimg - Go package for fast high-level image processing powered by libvips C library
mergi - go library for image programming (merge, crop, resize, watermark, animate, ease, transit)
resize - Pure golang image resizing
imaginary - Fast, simple, scalable, Docker-ready HTTP microservice for high-level image processing
gg - Go Graphics - 2D rendering in Go with a simple API.
ShibaView - Fast and lightweighed image viewer for Windows. Suitable for image processing and computer vision area, providing presize visualization without interpolation, high zoom and color picking mode.
gocv - Go package for computer vision using OpenCV 4 and beyond. Includes support for DNN, CUDA, and OpenCV Contrib.
imaging - Imaging is a simple image processing package for Go
sharp - High performance Node.js image processing, the fastest module to resize JPEG, PNG, WebP, AVIF and TIFF images. Uses the libvips library.
imagick - Go binding to ImageMagick's MagickWand C API
tacentview - An image and texture viewer for tga, png, apng, exr, dds, pvr, ktx, ktx2, astc, pkm, qoi, gif, hdr, jpg, tif, ico, webp, and bmp files. Uses Dear ImGui, OpenGL, and Tacent. Useful for game devs as it displays information like the presence of an alpha channel and querying specific pixels for their colour.