PureBasic

EncodeImage()

Синтаксис

*Buffer = EncodeImage(#Image [, ImagePlugin [, Flags [, Depth]]])

Описание


Кодирует указанное изображение и помещает его в созданный буфер памяти.

Параметры

#Image Номер, идентифицирующий изображение, которое требуется закодировать.
ImagePlugin (дополн.) Формат для кодирования изображения. Этот параметр может быть одним из следующих значений:
  #PB_ImagePlugin_BMP      : кодирует в формат BMP (по умолчанию)
  #PB_ImagePlugin_JPEG     : кодирует в формат JPEG, (требуется UseJPEGImageEncoder())
  #PB_ImagePlugin_JPEG2000 : кодирует в формат JPEG2000 (требуется UseJPEG2000ImageEncoder())
  #PB_ImagePlugin_PNG      : кодирует в формат PNG (требуется UsePNGImageEncoder())
Flags (дополн.) Параметры для подключаемого плагина изображений. На данный момент поддерживается только настройка качества: число от 0 (минимальное качество) до 10 (максимальное качество). В настоящее время поддерживаются только плагины JPEG и JPEG 2000 (по умолчанию для качества установлено значение "7", если флаги не указаны).

Когда изображение кодируется с использованием глубины палитры (1, 4 или 8), для комбинации доступен следующий флаг:
  #PB_Image_FloydSteinberg: Применение сглаживание Флойда-Штайнберга.
Depth (дополн.) Глубина цвета для сохранённого изображения. Допустимые значения: 1, 4, 8, 24 и 32. Значение по умолчанию - это исходная глубина цвета изображения. Пока только кодер PNG поддерживает формат палитры (1, 4 или 8 бит).

Возвращаемое значение

Возвращает указатель на автоматически выделенный буфер памяти, содержащий кодированное изображение, или ноль, если операция не удалась. Для получения размера кодированного изображения, можно использовать функцию MemorySize(). Чтобы удалить буфер после использования, воспользуйтесь функцией FreeMemory().

Пример (Фран)

UsePNGImageEncoder()
UsePNGImageDecoder()
If OpenWindow(0, 0, 0, 426, 128, "EncodeImage", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    ImageGadget(0, 0, 0, 128, 128, LoadImage(0, #PB_Compiler_Home+"Examples\Sources\Data\GeeBee2.bmp"))
    ButtonGadget(1, 138, 50, 150, 30, "Кодирование PNG 2 бита ->")
    ImageGadget(2, 298, 0, 128, 128, 0)

    *ptr=EncodeImage(0 , #PB_ImagePlugin_PNG, #PB_Image_FloydSteinberg, 2) ; Кодирование два бита

    Repeat
        Event = WaitWindowEvent()
        If Event = #PB_Event_Gadget
            Select EventGadget()
                Case 1
                    CatchImage(2, *ptr) ; Изображение в памяти
                    SetGadgetState(2, ImageID(2)) ; Просмотр
            EndSelect
        EndIf
    Until Event = #PB_Event_CloseWindow
EndIf

См. также

LoadImage(), библиотека ImagePlugin

Поддерживаемые OS

Все

<- CreateImage() - Оглавление Image - FreeImage()->