Библиотека GSLib



GSLib

GSLib (The GrayScale Library) - это потоковая библиотека для сжатия изображений с потерями. Библиотека GSLib ориентирована на изображения в 256 градациях серого (8-bit grayscale). Полноцветные изображения (24-bit truecolor) будут сначала преобразованы в 256 градаций серого, а затем сжаты.

Алгоритм, использованный в GSLib, основан на дискретном косинусном преобразовании (ДКП) и коде Хаффмана. Алгоритм оперирует областями 8x8, на которых яркость меняется сравнительно плавно. Вследствие этого, при разложении матрицы такой области в двойной ряд по косинусам значимыми оказываются только первые коэффициенты. Таким образом, сжатие в GSLib осуществляется за счет плавности изменения яркости в изображении.

По сути, GSLib - это аналог JPEG, но только для изображений в 256 градациях серого и с гораздо более простым и удобным API. Хотя GSLib выполнена в виде DLL библиотеки для Windows, она элементарно портируется на любые другие платформы.

GSLib предоставляет функции для сжатия (распаковки) изображения в памяти целиком или по частям. Если входной и выходной буффера (I/O buffers) достаточно велики, то изображение может быть сжато (распаковано) за один вызов функции сжатия (распаковки). В противном случае изображение можно сжать (распаковать) по частям, вызывая функцию сжатия (распаковки) несколько раз. В этом случае приложение должно предоставлять очередную порцию входных данных и/или сохранять выходные данные перед каждым вызовом.

Помимо GSLib, в дистрибутиве есть еще одна библиотека - GSBMPLib. Она отличается от GSLib тем, что предоставляет функции для сжатия (распаковки) не буфферов, а файлов. Как следует из названия, файлы должны быть в формате BMP. По сути, GSBMPLib это надстройка над GSLib.

В дистрибутив также включена подробная документация по API обеих библиотек и примеры их использования в различных средах разработки: Visual C++, Visual Basic, Delphi, C++ Builder, ANSI C/C++.

GSLib теперь находится в свободном доступе и распространяется в соответствии с лицензией GNU GPL.

gslib-win32-1.0.1.zip

Собственно, это сам дистрибутив. В архиве содержатся библиотеки, исходные тексты примеров, документация и тестовые изображения.

gsdll-win32-1.0.1.zip

В этом архиве содержится исходный текст самой библиотеки GSLib (gs.dll). Весь исходный текст уместился в один файл. Размер откомпилированной библиотеки - 8 Kb. Использовался компилятор VC6.

gslib-help-1.0.1.zip

Документация для GSLib находится в формате CHM (на русском и английском). Если, по каким-либо причинам, вы не можете ее прочитать, то можно загрузить "исходники" на html.


Copyleft © 2003-2008 Александр Симаков
Сыктывкарский государственный университет
Последнее обновление: 15 марта 2008