UE5 C++ 读取本地图片并赋值到UI上

目录

结果图

节点样式 

主要代码

调试代码


结果图


节点样式 

主要代码

(注释纯属个人理解,可能存在错误)

// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"
#include "IImageWrapper.h"
#include "IImageWrapperModule.h"
#include "GameFramework/Actor.h"
#include "SDProject01/Lib/Lib.h"
#include "LoadLocalPic.generated.h"UCLASS()
class SDPROJECT01_API ALoadLocalPic : public AActor
{GENERATED_BODY()public:	// Sets default values for this actor's propertiesALoadLocalPic();UFUNCTION(BlueprintCallable,Category="MyFunction2Load",meta=(Keywords="Load Image"))int testFunc(int a, int b);UFUNCTION(BlueprintCallable, Category = "MyFunction2Load", meta = (Keywords = "Load Image"))UTexture2D* LoadImageFromFile(const FString& ImagePath);
};
// Fill out your copyright notice in the Description page of Project Settings.#include "LoadLocalPic.h"// Sets default values
ALoadLocalPic::ALoadLocalPic()
{// Set this actor to call Tick() every frame.  You can turn this off to improve performance if you don't need it.PrimaryActorTick.bCanEverTick = true;}
int ALoadLocalPic::testFunc(int a, int b)
{return a + b;
}UTexture2D* ALoadLocalPic::LoadImageFromFile(const FString& ImagePath)
{//判断地址为空if (ImagePath.IsEmpty()) {Lib::echo("Path is empty", 3);return nullptr;}//判断是否存在文件,文件是否能转为数组TArray<uint8> CompressedData;if (!FFileHelper::LoadFileToArray(CompressedData, *ImagePath)) {Lib::echo("file not find",3);return nullptr;}//判断文件格式EImageFormat imageformat = EImageFormat::Invalid;if (ImagePath.EndsWith(".png"))imageformat = EImageFormat::PNG;else if (ImagePath.EndsWith(".jpg") || ImagePath.EndsWith(".jpeg"))imageformat = EImageFormat::JPEG;else{Lib::echo("fileformat false", 3);return nullptr;}//创建图片封装器IImageWrapperModule& imageWrapperModule = FModuleManager::LoadModuleChecked<IImageWrapperModule>(FName("IMageWrapper"));TSharedPtr<IImageWrapper> imageWrapper = imageWrapperModule.CreateImageWrapper(imageformat);//解码图片//获取图片信息if (!imageWrapper->SetCompressed(CompressedData.GetData(), CompressedData.Num())) {Lib::echo("Compressed file failed", 3);return nullptr;}//创建纹理TArray<uint8> UncompressedRGBA;if (!imageWrapper->GetRaw(ERGBFormat::RGBA, 8, UncompressedRGBA))return nullptr;UTexture2D* texture2d= UTexture2D::CreateTransient(imageWrapper->GetWidth(), imageWrapper->GetHeight(), PF_R8G8B8A8);if (!texture2d)return nullptr;//赋值纹理void* texturedata = texture2d->PlatformData->Mips[0].BulkData.Lock(LOCK_READ_WRITE);FMemory::Memcpy(texturedata, UncompressedRGBA.GetData(), UncompressedRGBA.Num());texture2d->PlatformData->Mips[0].BulkData.Unlock();texture2d->UpdateResource();return texture2d;
}

调试代码

// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"/*** */
class SDPROJECT01_API Lib
{
public:Lib();~Lib();static void echo(FString value, float duration);static void echo(float value, float duration);
};

 

// Fill out your copyright notice in the Description page of Project Settings.#include "SDProject01/Lib/Lib.h"Lib::Lib()
{
}Lib::~Lib()
{
}void Lib::echo(FString value, float duration)
{GEngine->AddOnScreenDebugMessage(-1, duration, FColor::Blue, value);
}void Lib::echo(float value, float duration)
{const FString temp = FString::Printf(TEXT("%f"), value);GEngine->AddOnScreenDebugMessage(-1,duration,FColor::Blue,temp);
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/658006.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

rocketmq自定义开机自启动【systemctl方式】

环境&#xff1a; rocketmq版本&#xff1a;4.7.0 rocketmq二进制包&#xff1a;rocketmq-all-4.7.0-bin-release.zip 系统&#xff1a;linux系统 1. 准备namesrv启动脚本 mqnamesrv.sh【任意路径】 #!/bin/bash source /etc/profile workdir"/home/ec2-user/config/…

Java面向对象详解

面向对象和面向过程的区别&#xff1a; 面向对象和面向过程都是对软件分析、设计和开发的一种思想&#xff0c;它指导着人们以不同的方式去分析、设计和开发软件。C语言是一种典型的面向过程语言&#xff0c;Java是一种典型的面向对象语言。 面向过程适合简单、不需要协作的事务…

Flask和Go框架相比

Flask和Go框架是目前非常受欢迎的Web开发框架&#xff0c;它们在设计和目标上有所不同。 首先&#xff0c;Flask是一个轻量级的Python Web框架&#xff0c;而Go框架是基于Go语言的。 Flask注重简单性和灵活性&#xff0c;提供了一些基本的工具和功能&#xff0c;使得开发者能够…

C#的String.Format 方法

目录 一、重载 二、Format(String, Object) 1.定义 2.示例 三、Format(String, Object[]) 1.定义 2.示例 3.示例 将对象的值转换为基于指定格式的字符串&#xff0c;并将其插入到另一个字符串。 一、重载 Format(IFormatProvider, String, Object, Object, Object) …

PDF操作——批量删除末页

一、说明 由于PDF末页为空白页或者是免责声明需要删除&#xff0c;涉及的文件比较多&#xff0c;因此写了一小段代码进行处理。 二、完整架构流程 这个代码的整体架构流程可以分为以下几个步骤&#xff1a; 导入所需的库&#xff1a;首先&#xff0c;代码导入了PyPDF2和os两…

Optimism的挑战期

1. 引言 前序博客&#xff1a; Optimism的Fault proof 用户将资产从OP主网转移到以太坊主网时需要等待一周的时间。这段时间称为挑战期&#xff0c;有助于保护 OP 主网上存储的资产。 而OP测试网的挑战期仅为60秒&#xff0c;以简化开发过程。 2. OP与L1数据交互 L1&#xf…

探索智能巡检机器人深度学习的奥秘

机器人深度学习&#xff08;Robot Deep Learning&#xff09;是指利用深度学习技术&#xff0c;使机器人能够从大量数据中学习和提取特征&#xff0c;进而实现自主感知、决策和行动的能力。通过深度学习算法&#xff0c;机器人可以从传感器获取的数据中自动学习模式和规律&…

微信开放平台第三方开发,实现代小程序认证申请

大家好&#xff0c;我是小悟 微信小程序认证整体流程总共分为五个环节&#xff1a;认证信息填写、平台初审、管理员验证、供应商审核和认证成功。 服务商可以代小程序发起认证申请。平台将对认证基础信息进行初步校验。通过后&#xff0c;平台将向管理员微信下发模板消息&…

Redis(十)SpringBoot集成Redis

文章目录 连接单机mvnYMLController.javaRedisConfig.java 连接集群YML问题复现 RedisTemplate方式 连接单机 mvn <!--Redis--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</art…

SRC实战 | 信息泄露挖掘

本文由掌控安全学院 - 叴龙 投稿 1. 信息搜集 首先老语法先搜集一波&#xff0c;毕竟没有钓鱼和sg的能力&#xff0c;只能找注册站去挖挖了。 web.title”XX大学”&&web.body”忘记密码”&&web.body”注册” 2. 漏洞挖掘 这里找到一个可以注册网站接口&…

蓝桥杯 第 1 场 小白入门赛

目录 1.蘑菇炸弹 2.构造数字 3.小蓝的金牌梦 4.合并石子加强版 5.简单的LIS问题 6.期望次数 1.蘑菇炸弹 我们直接依照题目 在中间位置的数进行模拟即可 void solve(){cin>>n;vector<int> a(n1);for(int i1;i<n;i) cin>>a[i];int ans0;for(int i2;i…

WGS 84框架发布新版本-WGS 84(G2296)

根据NGA发布的最新消息&#xff0c;WGS 84框架发布了新版本-WGS 84(2296)&#xff0c;上一版本是G2139。以下是相关信息。 WGS 84 TERRESTRIAL REFERENCE FRAME (TRF) NGA implemented a new realization of the WGS 84 TRF, named WGS 84 (G2296) in its orbit and clock pr…

XSS haozi靶场通关笔记

XSS靶场地址&#xff1a;alert(1) 靶场的要求是输出一个内容为1的弹窗&#xff1b;这个靶场限制了输入位置只能是input code&#xff1b;而且浏览器发送内容时会自动进行url编码&#xff1b;所以重点考察的是代码的分析和基础payload构造&#xff1b;一切完成在当前页面&#…

【数据结构】链表(单链表实现+测试+原码)

1.链表 1.1 链表的概念及结构 概念&#xff1a;链表是一种物理存储结构上非连续、非顺序的存储结构&#xff0c;数据元素的逻辑顺序是通过链表 中的指针链接次序实现的 。 现实中&#xff1a;链表就像是一列动车&#xff0c;一节连着一节 数据结构中的链表 注意: 1.从上图可看出…

解决php date()输出时间与Linux系统不一致

一、在Docker容器创建好之后&#xff0c;可能会发现容器时间跟宿主机时间不一致 我们需要同步它们的时间&#xff0c;让容器时间跟宿主机时间保持一致。有以下几种方法&#xff1a; 方法1&#xff1a; 在创建 Docker 容器时&#xff0c;加上 “-v /etc/localtime:/etc/local…

python管理依赖关系库

一、poetry Poetry 是一个用于管理 Python 项目依赖关系和构建工具的工具。它提供了一个简单的命令行界面&#xff0c;可以帮助您创建、管理和发布 Python 项目&#xff0c;使用方法&#xff1a;command [options] [arguments] 官网&#xff1a;https://python-poetry.org/doc…

React16源码: React中LegacyContext的源码实现

LegacyContext 老的 contextAPI 也就是我们使用 childContextTypes 这种声明方式来从父节点为它的子树提供 context 内容的这么一种方式遗留的contextAPI 在 react 17 被彻底移除了&#xff0c;就无法使用了那么为什么要彻底移除这个contextAPI的使用方式呢&#xff1f;因为它…

知识点积累系列(一)golang语言篇【持续更新】

云原生学习路线导航页&#xff08;持续更新中&#xff09; 本文是 知识点积累 系列文章的第一篇&#xff0c;记录golang语言相关的知识点 1.结构体的mapstructure是什么 mapstructure:"default" mapstructure是一个Go语言的库&#xff0c;用于将一个map中的值映射到…

C语言王道第八周一题

Description 初始化顺序表&#xff08;顺序表中元素为整型&#xff09;&#xff0c;里边的元素是 1,2,3&#xff0c;然后通过 scanf 读取一个元素&#xff08;假如插入的是 6&#xff09;&#xff0c;插入到第 2 个位置&#xff0c;打印输出顺序表&#xff0c;每个 元素占 3 个…

添加了gateway之后远程调用失败

前端提示500&#xff0c;后端提示[400 ] during [GET] to [http://userservice/user/1] 原因是这个&#xff0c;因为在请求地址写了两个参数&#xff0c;实际上只传了一个参数 解决方案&#xff1a;加上(required false)并重启所有相关服务