libjpeg

Широко используемая библиотека для работы с изображениями в формате JPEG (Joint Photographic Experts Group). Она предоставляет функции для чтения, записи, сжатия и декомпрессии изображений в формате JPEG, а также для выполнения различных операций преобразования изображений. Библиотека известна своей надежностью, производительностью и совместимостью с множеством приложений.

Особенности

  • поддержка чтения и записи файлов в формате JPEG (базовый, прогрессивный, с потерями и без потерь);
  • настраиваемые параметры сжатия (качество, субдискретизация, прогрессивный режим);
  • возможность работы с различными цветовыми пространствами (YCbCr, RGB, grayscale);
  • высокая производительность благодаря оптимизированным алгоритмам.

Основные компоненты

libjpeg предоставляет набор функций и структур данных для работы с JPEG-изображениями на низком и высоком уровнях (подробнее с документацией можно ознакомиться здесь).

Управление сжатием и декомпрессией

Библиотека использует объекты-представления для управления процессом сжатия (compression) и декомпрессии (decompression). Эти объекты хранят состояние и параметры, необходимые для обработки JPEG-данных.

Основные объекты и функции:

  • jpeg_compress_struct и jpeg_decompress_struct — основные структуры для сжатия и декомпрессии;
  • jpeg_create_compress() и jpeg_create_decompress() — инициализация структур;
  • jpeg_destroy_compress() и jpeg_destroy_decompress() — освобождение ресурсов;
  • jpeg_stdio_dest() и jpeg_stdio_src() — указание источника/приемника данных (файл);
  • jpeg_mem_dest() и jpeg_mem_src() — работа с памятью как источником/приемником.

Чтение и запись JPEG-файлов

Библиотека предоставляет функции для чтения заголовков JPEG, декомпрессии данных изображения, а также для настройки параметров сжатия и записи изображений в формате JPEG.

Функции чтения и записи:

  • jpeg_read_header() — чтение заголовка JPEG-файла (без декомпрессии данных);
  • jpeg_start_decompress() — начало процесса декомпрессии;
  • jpeg_read_scanlines() — чтение данных изображения построчно;
  • jpeg_start_compress() — начало процесса сжатия;
  • jpeg_write_scanlines() — запись данных изображения построчно;
  • jpeg_finish_decompress() и jpeg_finish_compress() — завершение процессов.

Управление параметрами сжатия

libjpeg позволяет тонко настраивать параметры сжатия для достижения баланса между качеством изображения и размером файла. Это включает настройку качества, субдискретизации цветовых компонент и других параметров.

Основные параметры сжатия:

  • jpeg_set_quality() — установка уровня качества (от 0 до 100);
  • jpeg_set_colorspace() — выбор цветового пространства (JCS_RGB, JCS_GRAYSCALE, JCS_YCbCr);
  • Управление субдискретизацией (через jpeg_set_defaults() и jpeg_default_colorspace);
  • Выбор типа сжатия (базовый, прогрессивный) через jpeg_simple_progression() и jpeg_suppress_tables().

Обработка ошибок и восстановление

Библиотека включает механизмы обработки ошибок, которые позволяют приложениям корректно реагировать на проблемы при чтении или записи JPEG-файлов. Также поддерживается ограниченное восстановление после ошибок.

Функции обработки ошибок:

  • Установка пользовательского обработчика ошибок через jpeg_error_mgr;
  • jpeg_abort() — аварийное прерывание обработки;
  • jpeg_resync_to_restart() — попытка восстановления после ошибки в потоке данных;
  • Режим "warning" для некритичных проблем.

Преобразование изображений

libjpeg предоставляет встроенные возможности для преобразования изображений во время декомпрессии, такие как изменение размера, обрезка и преобразование цветового пространства.

Функции преобразования:

  • jpeg_crop_scanline() — обрезка изображения по горизонтали;
  • jpeg_skip_scanlines() — пропуск строк (для быстрого масштабирования);
  • Масштабирование во время декомпрессии через jpeg_scale_num и jpeg_scale_denom;
  • Автоматическое преобразование цветового пространства (например, YCbCr в RGB).

Интеграция с другими библиотеками

libjpeg часто используется в сочетании с другими библиотеками обработки изображений, такими как libpng, libtiff, и графическими интерфейсами, такими как GTK, Qt.

Точки интеграции:

  • Использование в графических редакторах (GIMP, Photoshop) и просмотрщиках изображений;
  • Интеграция с веб-серверами для динамической обработки изображений;
  • Использование в мобильных приложениях для загрузки и сохранения изображений;
  • Поддержка в языках программирования через обертки (Python, Java, Perl и др.).

Использование в проекте

Документация по использованию Conan-пакетов для разработки приложений для ОС Аврора.

На сервере Conan библиотеки заранее собраны и размещены под различные версии ОС Аврора 4 и ОC Аврора 5. Для данных версий представлены архитектуры armv7hl, aarch64 и x84_64.

Библиотеку можно использовать в проекте с помощью данного conanfile.py

from conan import ConanFile

class Application(ConanFile):
    settings = "os", "compiler", "arch", "build_type"
    generators = "PkgConfigDeps"

    requires = (
        "libjpeg/9e@aurora",
    )    

Процесс локальной сборки описан в документации.

libjpeg

Libjpeg is a widely used C library for reading and writing JPEG image files.
Лицензия
IJG
Версия
Домашняя страница
Скачать
armv7
212.2 Kb
MD5: 40fbf0801007b5e8c8f8a837b6d4dc65
Updated: 03.09.2025, 18:20:59
armv8
258.48 Kb
MD5: 2c4a93f786098a0e684974b8c54f96f0
Updated: 03.09.2025, 18:20:36
x86_64
205.22 Kb
MD5: e99e6c82b943f67d3bdf20d471f6696b
Updated: 03.09.2025, 18:21:03
Использование в проекте

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.