Navigation
API > API/Runtime > API/Runtime/ImageWrapper
Interface for image wrapper modules.
DO NOT WRITE CODE THAT USES IMAPE WRAPPERS DIRECTLY.
If you have "Engine" module, then just use FImageUtils::CompressImage/DecompressImage The easiest way to load/save an image is FImageUtils::LoadImage/SaveImageByExtension
If you don't have "Engine" module, then use IImageWrapperModule::CompressImage/DecompressImage Do not manually create individual image wrappers.
NOTE: Please prefer to work with images through ImageCore FImage/FImageView (not TextureSource/TextureSourceFormat or raw arrays of bytes) again, do not manually use ERGBFormat and arrays of bytes to work with ImageWrappers instead use the FImage-oriented APIs which will handle all format conversions for you.
You do NOT need to convert formats before saving an image, the FImage APIs will do it for you.
If you got an image from a render target, it may have a zero alpha channel. You might want to do FImageCore::SetAlphaOpaque before saving.
note on SRGB/Gamma handling : it is assumed that non-U8 data is always Linear U8 data is written without changing the bytes the gamma correction of U8 bytes is NOT persisted in the file formats (for read or write) loading will always give you SRGB for U8 (ERawImageFormat::GetDefaultGammaSpace) if U8-float conversions are required, they do respect gamma space
eg. if you write U8 Linear data to EXR, it will be converted to Linear float from U8 Linear correctly if you write U8 Linear to BMP , it will write the U8 bytes unchanged, and on load it will come back in as U8 SRGB
| Name | IImageWrapperModule |
| Type | class |
| Header File | /Engine/Source/Runtime/ImageWrapper/Public/IImageWrapperModule.h |
| Include Path | #include "IImageWrapperModule.h" |
Syntax
class IImageWrapperModule : public IModuleInterface
Implements Interfaces
Destructors
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
virtual ~IImageWrapperModule() |
Virtual destructor. | IImageWrapperModule.h |
Functions
Public
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
bool CompressImage
(
TArray64< uint8 >& OutData, |
Convert input FImage into a file-format encoded array. | IImageWrapperModule.h | |
void ConvertRawImageFormat
(
ERawImageFormat::Type RawFormat, |
Convert an FImageERawImageFormat into an ImageWrapper style {ERGBFormat+BitDepth} mapping is always possible and requires no conversion | IImageWrapperModule.h | |
ERawImageFormat::Type ConvertRGBFormat
(
ERGBFormat Format, |
Convert an ImageWrapper style {ERGBFormat+BitDepth} into an ERawImageFormat for FImage returns ERawImageFormat::Invalid if no mapping is possible bIsExactMatch is filled with whether the formats are an exact match or not if not, conversion is needed | IImageWrapperModule.h | |
TSharedPtr< IImageWrapper > CreateImageWrapper
(
const EImageFormat InFormat, |
Create an IImageWrapper helper of a specific type | IImageWrapperModule.h | |
bool DecompressImage
(
const void* InCompressedData, |
Read an image from file format encoded data. | IImageWrapperModule.h | |
bool DecompressImage
(
const void* InCompressedData, |
Read an image from file format encoded data. | IImageWrapperModule.h | |
EImageFormat DetectImageFormat
(
const void* InCompressedData, |
Detect image format by looking at the first few bytes of the compressed image data. | IImageWrapperModule.h | |
EImageFormat GetDefaultOutputFormat
(
ERawImageFormat::Type RawFormat |
Get a good default output image format for a pixel format | IImageWrapperModule.h | |
const TCHAR * GetExtension
(
EImageFormat Format |
Returns extension, not including the "." , 3 or 4 chars | IImageWrapperModule.h | |
EImageFormat GetImageFormatFromExtension
(
const TCHAR* Name |
Name can be a full name like "xx.png" or just the extension part, like "png" returns EImageFormat::Invalid if no supported image extension found | IImageWrapperModule.h |