Comments 3
Спасибо за полезную статью!
Оставлю в комментарии апдейт.
Код работает без изменений под 5.1, проверено.
В UE 5.1 добавили коллбэк на HighresShot, теперь на него можно подписаться, и считать картинку из памяти не сохраняя на диск, вот так:
void A_GMB::TakeScreenshot()
{
FHighResScreenshotConfig& HighResScreenshotConfig = GetHighResScreenshotConfig();
HighResScreenshotConfig.SetResolution(1920, 1080);
HighResScreenshotConfig.SetFilename(ScreenshotFileName);
HighResScreenshotConfig.SetMaskEnabled(false);
HighResScreenshotConfig.SetHDRCapture(false);
GEngine->GameViewport->OnScreenshotCaptured().AddUObject(this, &A_GMB::HandleScreenshotData);
GEngine->GameViewport->GetGameViewport()->TakeHighResScreenShot();
}
void A_GMB::HandleScreenshotData(int32 InSizeX, int32 InSizeY, const TArray<FColor>& InImageData)
{
TArray64<uint8> CompressedBitmap;
FImageUtils::PNGCompressImageArray(InSizeX, InSizeY, TArrayView64<const FColor>(InImageData.GetData(), InImageData.Num()), CompressedBitmap);
UE_LOG(LogTemp, Error, TEXT("Screenshot taken"));
// тут можно запилить новую функцию и передать в нее адрес массива с картинкой
UploadManager->UploadScreenshot(CompressedBitmap, UploadInfo);
}
Для того, чтобы конвертировать TArray64 в TArray можно использовать конструктор вида TArray(CompressedBitmap) из примера выше.
Sign up to leave a comment.
Засылаем картинку из Unreal Engine на сервер в теле HTTP запроса