虚幻引擎(UE)C++,加载读取本地路径图片、Texture2D

2023-11-09

//通过路径获取单张图片,转为Texture2D

UFUNCTION(BlueprintCallable, Category = "Image")

static UTexture2D* LoadTexture2D(const FString ImagePath);

//获取指定路径下的所以有图片的名称

UFUNCTION(BlueprintCallable, Category = "Image")

static TArray GetFolderFiles(FString ImagePath);

//将指定路径下的所有图片转为Texture2D

UFUNCTION(BlueprintCallable, Category = "Image")

static TArray GetAllImageFromFiles(FString ImagePath);

//判断图片类型

static TSharedPtrGetImageWrapperByExtention(const FString ImagePath);

UTexture2D* ULoadImageToTexture::LoadTexture2D(const FString ImagePath)

{

UTexture2D* Texture = nullptr;

if (!FPlatformFileManager::Get().GetPlatformFile().FileExists(*ImagePath))

{

return nullptr;

}

TArray RawFileData;

if (!FFileHelper::LoadFileToArray(RawFileData, *ImagePath))

{

return nullptr;

}

TSharedPtr ImageWrapper = GetImageWrapperByExtention(ImagePath);

if (ImageWrapper.IsValid() && ImageWrapper->SetCompressed(RawFileData.GetData(), RawFileData.Num()))

{

TArray UncompressedRGBBA;

if (ImageWrapper->GetRaw(ERGBFormat::RGBA, 8, UncompressedRGBBA))

{

Texture = UTexture2D::CreateTransient(ImageWrapper->GetWidth(), ImageWrapper->GetHeight(), PF_R8G8B8A8);

if (Texture != nullptr)

{

void* TextureData = Texture->PlatformData->Mips[0].BulkData.Lock(LOCK_READ_WRITE);

FMemory::Memcpy(TextureData, UncompressedRGBBA.GetData(), UncompressedRGBBA.Num());

Texture->PlatformData->Mips[0].BulkData.Unlock();

Texture->UpdateResource();

}

}

}

return Texture;

}

===============================================================================

TArray ULoadImageToTexture::GetFolderFiles(FString ImagePath)

{

TArrayfiles;

FPaths::NormalizeDirectoryName(ImagePath);

IFileManager& FileManager = IFileManager::Get();

FString FinalPath = ImagePath / TEXT("*");

FileManager.FindFiles(files, *FinalPath, true, true);

return files;

}

===============================================================================

TArray ULoadImageToTexture::GetAllImageFromFiles(FString ImagePath)

{

TArray ImgPath = GetFolderFiles(ImagePath);

TArrayTexture2DArr;

for (auto path : ImgPath)

{

UTexture2D* Texture2D = LoadTexture2D(ImagePath + "/" + path);

Texture2DArr.Add(Texture2D);

}

return Texture2DArr;

}

===============================================================================

TSharedPtr ULoadImageToTexture::GetImageWrapperByExtention(const FString ImagePath)

{

IImageWrapperModule& module = FModuleManager::LoadModuleChecked(FName("ImageWrapper"));

if (ImagePath.EndsWith(".png"))

{

return module.CreateImageWrapper(EImageFormat::PNG);

}

if (ImagePath.EndsWith(".jpg") || ImagePath.EndsWith("jpeg"))

{

return module.CreateImageWrapper(EImageFormat::JPEG);

}

return nullptr;

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

虚幻引擎(UE)C++,加载读取本地路径图片、Texture2D 的相关文章

  • 用虚幻4开发搭积木的VR游戏

    2016 年 9 月 23 24 日 由 CSDN 和创新工场联合主办的 MDCC 2016 移动开发者大会 中国 Mobile Developer Conference China 将在北京 国家会议中心召开 来自iOS Android
  • UE4 如何使用C++代码实现 在指定范围内随机生成同一个种类的不同物品(怪物,NPC,拾取物)的 自定义蓝图

    一 引言 在游戏世界中有特别多的物品 NPC 怪物 使用UE4中的蓝图我们可以摆放这些事务 但是如何在指定范围内随机生成同一个种类的不同事物呢 这就需要UE4 实现 C 自定义 蓝图功能 二 构思 首先我们构思一下实现上诉功能 应该怎么做
  • 时间戳获取

  • Unity 使用LineRenderer连接2个物体

    1 在Hierarchy面板中创建2个GameObject A和B 这就是希望连接的2个物体 2 同理创建1个EmptyObject C 挂上LineRenderer组件 记得给Materials赋值 3 创建1个新的C 脚本LineMan
  • Unity卡死情况

    今天遇到了Unity点击播放后卡死 用任务管理器强行关闭后重开 打不开项目的情况 解决方案 检查USB接口设备 有些设备可能会影响Unity工程启动 比如VR头盔
  • Unity 用脚本操作常用UI控件(上)

    控件介绍 在界面系统的术语中 将一个具有独立状态 外观和操作的对象称为控件 例如 常用的交互控件有按钮 输入框 滑动条等 常见的非交互式控件有文本标签 图片等 Unity采用了父子物体和组件的设计思想 其每个界面控件 往往也是由游戏物体挂载
  • 虚幻引擎程序化资源生成框架PCG 之 UPCGBlueprintElement源码笔记(一)

    UPCGBlueprintElement是PCGGraph中自定义节点的基类 但官方目前还没有给出详细的文档 所以从源代码里找点答案 文章目录 可覆盖函数 Override Functions Excute 和 Excute with Co
  • Unity—UGUI

    每日一句 读数 学习 去更远的地方 才能摆脱那些你不屑一顾的圈子 目录 InputFiled输入框 例 用户名和密码 Toggle组件 案例 冷却效果 InputFiled输入框 Text Component 输入文本组件 Text输入内容
  • Unity WebGL错误集锦

    ips 0 Unity的PlayerSettings的otherSettings或者Publish Settings里面的Enable Exceptions里面选择Full StackTrace 可以在打出的包中的浏览器的webgl打印出错
  • 1.17 从0开始学习Unity游戏开发--场景切换

    前面的所有文章我们都在一个固定的游戏场景内进行开发 在最开始介绍场景这个概念的时候就已经提及 这个场景可以是一张地图 或者是一个对战房间等等 所以显然这个场景可以有多个 并且可以从一个场景切换到另外一个场景 那么在Unity中如何进行场景切
  • Unity中级客户端开发工程师的进阶之路

    上期UWA技能成长系统之 Unity高级客户端开发工程师的进阶之路 得到了很多Unity开发者的肯定 通过系统的学习 可以掌握游戏性能瓶颈定位的方法和常见的CPU GPU 内存相关的性能优化方法 UWA技能成长系统是UWA根据学员的职业发展
  • Unity中按钮检测鼠标状态

    改方法主要是用于按钮检测鼠标的进入 滑出 点击 抬起 长按 长按停止 1 先将下面这个脚本挂载到需要检测鼠标状态的按钮上 using System Collections using System Collections Generic u
  • Unity中UI框架的使用1-添加面板、显示Loading页面

    其中BasePanel和Canvas都是挂在面板的预制物上的 1 导入我们的UI框架 本篇文章中有用的是两个UIPanelType NUIManager和NBasePanel 会放在文章最后供大家使用 2 先将我们做好的Panel设置成预制
  • 【Unity步步升】监控与检测物体的各种方案,如:射线、碰撞、挂载等...

    在制作AR模型数值控制方案的时候遇到了检测的问题 学习过程受益匪浅 故今天为大家整理带来一篇监控与检测物体的参考方案集合 目录 一 射线检测 二 物体存在检测 三 碰撞检测 一 射线检测 单射线检测 首先完成搭建场景如下图1 1 我这里用到
  • unity dots jobSystem 记录

    Looking for a way to get started writing safe multithreaded code Learn the principles behind our Job System and how it w
  • 【UE5】监控摄像头效果(下)

    目录 效果 步骤 一 多摄像机视角切换 二 摄像头自动旋转巡视 三 摄像头跟踪拍摄 效果 步骤 一 多摄像机视角切换 1 打开玩家控制器 MyPlayerController 添加一个变量 命名为 BP SecurityCameraArra
  • 【UE5】瞬移+马赛克过渡效果

    效果 步骤 1 新建一个工程 创建一个Basic关卡 2 添加第三人称游戏资源到内容浏览器 3 新建一个材质 这里命名为 M Pixel 打开 M Pixel 设置材质域为 后期处理 在材质图表中添加如下节点 此时效果如下 已经有马赛克的效
  • 【UE】制作地月全息投影

    效果 步骤 1 在必应国际版上搜索 purlin noise 下载如下所示图片 再搜索 Earth Map 下载如下所示图片 再搜索 Moon 360 下载如下所示图片 这三张图片的资源链接如下 链接 https pan baidu com
  • 【Unity】运行时创建曲线(贝塞尔的运用)

    Unity 运行时创建线 贝塞尔的运用 1 实现的目标 在运行状态下创建一条可以使用贝塞尔方法实时编辑的网格曲线 2 原理介绍 2 1 曲线的创建 unity建立网格曲线可以参考 Unity程序化网格体 的实现方法 主要分为顶点 三角面 U
  • 【UE】在控件蓝图中通过时间轴控制材质参数变化

    效果 步骤 1 新建一个控件蓝图和一个材质 2 打开材质 设置材质域为用户界面 混合模式设置为 半透明 在材质图表中添加两个参数来控制材质的颜色和不透明度 3 对材质创建材质实例 4 打开控件蓝图 在画布面板中添加一个图像控件 将刚才创建的

随机推荐

  • 糖尿病遗传风险检测挑战赛-权重融合

    权重融合 糖尿病遗传风险检测挑战赛 模型融合的内容还挺多的 我只是尝试stacking这种 权重融合也是后期上分的一种手段 基于上一篇 调参之后的进行权重融合 我用的是lightgbm xgboost CatBoostRegressor 这
  • 安卓手机ROOT和刷机基本操作——以红米Note7刷安卓原生系统并Root为例

    文章目录 前言 一 简介 1 安卓权限 2 安卓分区 Boot分区 System分区 Data分区 Cache分区 Recovery分区 3 Fastboot 二 前置准备 1 Android SDK 工具 2 解BL锁 三 ROOT 1
  • CNN简单实战:PyTorch搭建CNN对猫狗图片进行分类

    在上一篇文章 CNN训练前的准备 PyTorch处理自己的图像数据 Dataset和Dataloader 大致介绍了怎么利用pytorch把猫狗图片处理成CNN需要的数据 今天就用该数据对自己定义的CNN模型进行训练及测试 首先导入需要的包
  • 自学python(3):python处理各种标注文件的格式转换(json,txt,xml相互转化)

    目录 txt转xml xml转txt json转xml xml转json txt转xml coding utf 8 author HXY 2020 4 17 该脚本用于visdrone数据处理 将annatations文件夹中的txt标签文
  • Fiddler快速入门

    Fiddler是一个免费 强大 跨平台的HTTP抓包工具 Wireshark也是一个强大的抓包工具 不过Wireshark是一个通用的抓包工具 主要精力放在各种协议上了 针对HTTP的特定功能较少 所以如果你需要研究HTTP包的话 Fidd
  • 基于小波变换的网络流量的建模与预测

    网络流量能直接反映网络性能的好坏 网络流量的建模与预测对于大规模网络的规划设计 网络资源管理以及用户行为的调节等方面都具有积极意义 本课题首先介绍了网络流量的特征 在分析了小波理论的基础上提出了一种基于小波变换的网络流量预测模型 该模型采用
  • unity animator循环播放判断当前动画是否播放完毕

    记录下 直接上代码 主要俩个api animator GetCurrentAnimatorStateInfo 0 IsName name animator GetCurrentAnimatorStateInfo 0 normalizedTi
  • error: #130: expected a “{“ 的问题

    keil编译中经常会有此类问题 一般都是因为某个 号未打 导致后面全错 所有可以从依赖方面入手 从第一个问题开始向前找之前的include文件 有时候还会出现有些定义undefine 可以试试看include h重新排序 将依赖的defin
  • docker容器commit之后变得非常大的原因及解决办法

    一 原因 原因就是直接在容器里进行了很多操作 比如apt update install pip install等等 而没有使用Dockerfile来构建镜像 docker镜像的构建方式是以层的概念来实现的 在容器内所做的所有操作都会在构建镜
  • “我曾认为开源是有钱闲人的游戏,不要试图快速从中变现”

    作者 宋林飞 责编 何苗 受访嘉宾 卫剑钒 出品 CSDN ID CSDNnews 关注开源的人一定对 大教堂与集市 非常熟悉 随着这本书的中文版在国内发行 译者卫剑钒逐渐被更多的人熟知 而今 开源圈的朋友们亲切地称他卫Sir 书中 原作E
  • 关于SSM框架的一些问题以及解决方法

    目录 前言 一 web的蓝色小点消失 二 关于创建maven的方式 1 用最简单的方式创建 2 用最干净的方式创建 三 关于上传的文件重新部署tomcat后消失的问题 四 关于css文件和js文件在ssm项目无法解析的问题 五 关于myba
  • 2022 年 MathorCup 高校数学建模挑战赛——大数据竞赛(北京移动用户体验影响因素研究全套代码)

    赛道 B 北京移动用户体验影响因素研究 移动通信技术飞速发展 给人们带来了极大便利 人们也越来越离不开移动通信技术带来的各种便捷 随着网络不断的建设 网络覆盖越来越完善 各个移动运营商 越来越重视客户的网络使用体验 从而进一步提升网络服务质
  • Linux代码比对工具meld

    Ubuntu20 04下安装meld的时候报错 root PC apt get install meld 正在读取软件包列表 完成 正在分析软件包的依赖关系树 正在读取状态信息 完成 您也许需要运行 apt fix broken insta
  • 一本应届计算机混子春招复盘

    回首四年大学摆烂生活 什么都没做 大四上学期去参加10个人小公司实习错过秋招 大四下来卷春招 目前参加过一次群面 两次二面 群面 海天集团软件开发岗 2面3 问的问题还算简单 数据库索引B 树 链表 和我一起面试的都是考研失败者 我自认为答
  • 四个步骤买阿里云国际版

    本文是分享 不是广告 未添加联系方式 首先 本方法肯定是可行的 如果你有信用卡也可以网上搜索绑卡教程注册 本方法是不用你绑定PayPal与信用卡的版本 整个过程非常的简单 所以在开始之前 你务必要准备好下面这几样东西 1 一个用来注册用的邮
  • ruoyi Vue 文件上传组件 2.0

    简化了在页面的使用难度 在每次加载时监控 ids 是否变化 监测到变化就重新从后台通过ids获取数据 文件上传组件完整代码
  • Run-Time Check Failure #2 - Stack around the variable 's' was corrupted.

    https www cnblogs com ambdyx p 11779566 html 建议debug查看内存申请大小 数据大小 以及数组大小 对指针和引用进行甄别修改
  • 如何在CentOS 8上安装PostgreSQL

    PostgreSQL或Postgres是开放源代码的通用对象关系数据库管理系统 具有许多高级功能 使您可以构建容错环境或复杂的应用程序 在本指南中 我们将讨论如何在CentOS 8上安装PostgreSQL数据库服务器 在选择要安装的版本之
  • 【华为OD机试真题2023B卷 JS】观看文艺汇演问题

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 观看文艺汇演问题 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 为庆祝中国共产党成立100周年 某公园将举行多场文艺汇演 很多演出都是同时进行 一个人只能同时观看一场
  • 虚幻引擎(UE)C++,加载读取本地路径图片、Texture2D

    通过路径获取单张图片 转为Texture2D UFUNCTION BlueprintCallable Category Image static UTexture2D LoadTexture2D const FString ImagePat