PureBasic

CatchImage()

Синтаксис

Result = CatchImage(#Image , *MemoryAddress [, Size])

Описание


Загружает указанное изображение из данной области памяти.

Параметры

#Image Номер, идентифицирующий загруженное изображение. В качестве этого параметра можно использовать значение #PB_Any, чтобы сгенерировать этот Номер автоматически.
*MemoryAddress Адрес области памяти, из которой требуется загрузить изображение.
Size (дополн.) Размер изображения в байтах. Размер не является обязательным, поскольку загрузчик сам может определить этот размер загружая изображения. Однако рекомендуется указывать размер при загрузке неизвестных изображений, так как загрузчик может некорректно обрабатывать поврежденные изображения (если не указать размер, поврежденное изображение может привести к сбою программы).

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

Возвращает не нулевое значение, если изображение было успешно загружено, в противном случае ноль. Если в качестве параметра #Image использовалось значение #PB_Any, то в случае успеха будет возвращен сгенерированный Номер.

Комментарии

Предел для размера изображения, которое может быть обработано, зависит от операционной системы и доступного объема памяти. Если доступно достаточное количество памяти, то изображения с размером до 8192x8192 пикселей могут обрабатываться всеми операционными системами, поддерживаемыми PureBasic.

После загрузки изображение преобразуется или в 24-битное (если глубина изображения меньше или равна 24 битам) или в 32-битное (если изображение содержит канал прозрачности). Загруженное изображение можно удалить с помощью функции FreeImage().

Эта функция полезна при использовании ключевого слова PureBasic 'IncludeBinary'. В этом случае изображения можно вставлять в исполняемый файл. Однако используйте эту опцию осторожно, так как она потребует больше памяти, чем хранение изображения во внешнем файле (изображение и находится в исполняемой памяти, и загружено в физическую память).

Изображение может быть в формате BMP, icon (.ico, только в Windows) или в любом другом формате, поддерживаемом библиотекой ImagePlugin. Увеличить количество автоматически распознаваемых форматов изображений можно с помощью функций:

UseJPEGImageDecoder()
UseJPEG2000ImageDecoder()
UsePNGImageDecoder()
UseTIFFImageDecoder()
UseTGAImageDecoder()
UseGIFImageDecoder()

Пример

CatchImage(0, ?Logo)
End

DataSection
    Logo:
    IncludeBinary "Logo.bmp"
EndDataSection

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

If OpenWindow(0, 0, 0, 256, 256, "CatchImage", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    If CatchImage(0, ?Image_Start, ?Image_End - ?Image_Start)
        ImageGadget(0, 0, 0, ImageWidth(0), ImageHeight(0), ImageID(0))
        Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
    EndIf
EndIf

DataSection
    Image_Start:
    IncludeBinary #PB_Compiler_Home+"Examples\Sources\Data\Background.bmp"
    Image_End:
EndDataSection

Примечание: Символ "?" это указатель на метку. Больше информации об указателях и доступе к памяти можно найти в соответствующем разделе здесь.

См. также

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

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

Все

<- AddImageFrame() - Оглавление Image - CopyImage() ->