Facebook опубликовал библиотеку перекодирования изображений Spectrum 1.0.0
Facebook представил первый стабильный релиз проекта Spectrum, в рамках которого развивается кроссплатформенная библиотека для перекодирования и обработки изображений. Библиотека может интегрироваться в приложения для платформ Android и iOS для эффективного выполнения различных операций с изображениями. Код проекта написан на языке С++ и распространяется под лицензией MIT.
Библиотека предоставляет простой декларативный API, позволяющий определить характеристики выходного изображения и Spectrum сам вычислит и выполнит все необходимые преобразования, включая разбор и изменение метаданных EXIF. Основные операции: кодирование (преобразование битмапа в изображение в заданном формате), декодирование (преобразование формата в битмап), перекодирование (преобразование из одного формата в другой) и трансформация (кадрирование, вращение, изменение размера и т. п.). Обработчики форматов изображений определены в виде плагинов. Например, для формата JPEG по умолчанию применяется кодировщик Mozjpeg, обеспечивающий более высокую степень сжатия. Для обработки PNG применяется libpng, а для WEBP - libwebp. The Spectrum APIs incorporate declarative traits. This simplifies the usage for the developer by focusing on the desired outcome. At the same time it enables Spectrum to transparently choose the best execution sequence. Additionally, Spectrum makes common image operations simple by surfacing many difficult operations that are not typically exposed by platform frameworks. For example, some JPEG-to-JPEG operations like cropping are executed lossless, and disabling chroma sub-sampling when saving graphical JPEGs will lead to better quality final products.