3 KiB
pict-rs 0.5.7
Overview
pict-rs 0.5.7 adds support for generating blurhashes from images and includes a couple unrelated fixes and tweaks.
Features
Changes
Fixes
Upgrade Notes
There is a small repo format migration between 0.5.6 and 0.5.7. For sled it's simply opening a new tree, for postgres it involves adding a new column to the hashes table. These changes will automatically apply when launching pict-rs 0.5.7. Upgrading should be as simple as pulling a new version of pict-rs.
Descriptions
Blurhash Endpoint
A new endpoint at /image/blurhash
has been added for generating blurhashes from uploaded media. A
blurhash is a short string that encodes a few notable color values from an image that can be
reconstructed into a blurred approximation of the original image. Notably, blurhashes are used by
Mastodon to act as placeholders for sensitive media. For more information about blurhashes, see
blurha.sh.
This endpoint is powered by my new blurhash encoding library, blurhash-update.
On success, the blurhash endpoint returns the following JSON.
{
"msg": "ok",
"blurhash": "LGF5]+Yk^6#M@-5c,1J5@[or[Q6."
}
pict-rs does not provide a blurhash decoding mechanism (it would defeat the purpose of blurhashes to do so).
File Path Changes
pict-rs has dropped its dependency on my storage-path-generator
library in favor of using UUIDs to
create unique file paths for uploaded media. This means that newly uploaded media will be stored in
a different directory structure, and with different filenames. The purpose of this is to reduce
database use by removing the need to synchronize the current path state.
pict-rs 0.5.7 also adds file extensions back to file paths, since they are now somewhat-publicly visible (when using the public_endpoint configuration with object storage).
Neither of these changes affect previously uploaded media.
Performance Improvements
pict-rs 0.5.7 now buffers media in memory less frequently, opting to stream bytes directly from sources to sinks. This should improve general memory use, as well as decrease time pict-rs would spend waiting to aggregate bytes.
pict-rs also no longer requires bytes be present in contiguous buffers, avoiding large allocations and reducing memcpys.
More Consistent Errors
pict-rs 0.5 introduced machine-readable error codes that returned alongside error messages, but there were a couple locations in pict-rs that failed to include them. pict-rs 0.5.7 resolves this, ensuring all error paths properly return codes.
APNG Detection
pict-rs 0.5.7 fixes the imagemagick delegate policy for ffmpeg, which allows for properly detecting certain media, notably APNG files. pict-rs should once again be able to properly handle uploaded APNGs.