void FHighResScreenshotConfig::Init() { IImageWrapperModule* ImageWrapperModule = FModuleManager::LoadModulePtr<IImageWrapperModule>(FName("ImageWrapper")); if (ImageWrapperModule != nullptr) { ImageCompressorLDR = ImageWrapperModule->CreateImageWrapper(EImageFormat::PNG); ImageCompressorHDR = ImageWrapperModule->CreateImageWrapper(EImageFormat::EXR); } #if WITH_EDITOR HighResScreenshotMaterial = LoadObject<UMaterial>(NULL, TEXT("/Engine/EngineMaterials/HighResScreenshot.HighResScreenshot")); HighResScreenshotMaskMaterial = LoadObject<UMaterial>(NULL, TEXT("/Engine/EngineMaterials/HighResScreenshotMask.HighResScreenshotMask")); HighResScreenshotCaptureRegionMaterial = LoadObject<UMaterial>(NULL, TEXT("/Engine/EngineMaterials/HighResScreenshotCaptureRegion.HighResScreenshotCaptureRegion")); if (HighResScreenshotMaterial) { HighResScreenshotMaterial->AddToRoot(); } if (HighResScreenshotMaskMaterial) { HighResScreenshotMaskMaterial->AddToRoot(); } if (HighResScreenshotCaptureRegionMaterial) { HighResScreenshotCaptureRegionMaterial->AddToRoot(); } #endif }
bool UAirBlueprintLib::CompressUsingImageWrapper(const TArray<uint8>& uncompressed, const int32 width, const int32 height, TArray<uint8>& compressed) { bool bSucceeded = false; compressed.Reset(); if (uncompressed.Num() > 0) { IImageWrapperModule* ImageWrapperModule = UAirBlueprintLib::getImageWrapperModule(); TSharedPtr<IImageWrapper> ImageWrapper = ImageWrapperModule->CreateImageWrapper(EImageFormat::PNG); if (ImageWrapper.IsValid() && ImageWrapper->SetRaw(&uncompressed[0], uncompressed.Num(), width, height, ERGBFormat::RGBA, 8)) { compressed = ImageWrapper->GetCompressed(); bSucceeded = true; } } return bSucceeded; }