[UE4][C++]使用qrencode动态生成二维码

news2024/10/7 16:25:57

一、使用CMake编译x64版本qrencode

     下载地址 

GitHub - fukuchi/libqrencode: A fast and compact QR Code encoding libraryA fast and compact QR Code encoding library. Contribute to fukuchi/libqrencode development by creating an account on GitHub.https://github.com/fukuchi/libqrencode

 Configure之后会报错,不勾选WITH_TOOLS就行了。

 

 

 

 

二、UE4引入

还是采用第三方库的形式,引入头文件和静态lib文件 ,注意只能在cpp里调用

#include "Runtime\Core\Public\Windows\AllowWindowsPlatformTypes.h"
#include <Windows.h>
#include "qrencode.h"
#include "Runtime\Core\Public\Windows\HideWindowsPlatformTypes.h"

 三、动态生成

以下代码是在游戏自己创建的GameInstace里调用的,函数定义自己写了

UTexture2D* UWGameInstance::CreateQRCode(FString Path,int Scale)
{
	QRcode* pQRC = QRcode_encodeString(TCHAR_TO_ANSI(*Path),1,QR_ECLEVEL_L,QR_MODE_8,1);
	if (!pQRC)
		return nullptr;

	unsigned char* QRData = pQRC->data;
	UTexture2D* tex = UTexture2D::CreateTransient(pQRC->width* Scale, pQRC->width* Scale);
	//
	FTexture2DMipMap& mipmap = tex->PlatformData->Mips[0];
	unsigned char* Data = (unsigned char*)mipmap.BulkData.Lock(LOCK_READ_WRITE);

	int texturex = tex->PlatformData->SizeX;
	int texturey = tex->PlatformData->SizeY;

	for (int32 y = 0; y < texturey; y+= Scale)
	{
		for (int32 x = 0; x < texturex; x+= Scale)
		{
			int color = 0;
			if (*QRData & 1)
			{
				color = 255;
			}

			for (int32 i = 0; i < Scale; i++)
			{
				for (int32 j = 0; j < Scale; j++)
				{
					Data[((y + i) * texturex + (x + j)) * 4 + 0] = color;//B
					Data[((y + i) * texturex + (x + j)) * 4 + 1] = color;//G
					Data[((y + i) * texturex + (x + j)) * 4 + 2] = color;//R
					Data[((y + i) * texturex + (x + j)) * 4 + 3] = 255;//A 0:全透明;255:全不透明
				}
			}
			
			//后移
			QRData++;
		}
	}
	mipmap.BulkData.Unlock();
	tex->UpdateResource();
	//释放
	QRcode_free(pQRC);
	return tex;
}

 

 

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

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

相关文章

同创永益郑阳|与数智化共舞·业务稳定性保障新动力

2023年8月2日&#xff0c;由北大创新评论主办的2023 Inno China中国产业创新大会-保险产业创新论坛在京举办。本次论坛由同创永益、青牛软件、DaoCloud道客联合主办&#xff0c;INNO创新家、产业集群发展提供战略支持&#xff0c;未名数创承办&#xff0c;邀请到了学术专家、行…

抖音怎样发才有更多人看?四川玖璨电商

抖音是一款非常受欢迎的短视频应用程序&#xff0c;如果你想让更多人看到你的视频&#xff0c;那么你需要学习如何正确地使用抖音平台。在本文中&#xff0c;我们将提供一些有用的建议&#xff0c;以帮助你增加你的观众数量&#xff0c;让你的视频更加受欢迎。 1. 精心选择主题…

配置/var/tmp/fstab 权限/配置用户账户/查找文件/查找字符串

目录 配置/var/tmp/fstab 权限 配置用户账户 查找文件 查找字符串 创建归档 配置/var/tmp/fstab 权限 配置文件权限&#xff0c;将文件 /etc/fstab 复制到 /var/tmp/fstab 。配置 /var/tmp/fstab 的权限以满足 如下条 件&#xff1a; /var/tmp/fstab 属于 root 用户…

光致发光荧光量子产率测试系统

荧光量子产率&#xff0c;是单位时间&#xff08;s&#xff09;内&#xff0c;发射荧光的光子数与吸收激发光的光子数之间的比值&#xff0c;符号φf。它表示物质将吸收的光能转变成荧光的能力&#xff0c;是荧光物质一个最基本而重要的参数。φf值的大小与物质的化学结构紧密相…

ARM64是什么意思?与x86有什么区别?

你知道ARM64是什么意思&#xff1f;与x86有什么区别&#xff1f;哪款堡垒机支持ARM64架构&#xff1f;且听我道来。 ARM64是什么意思&#xff1f; 【回答】&#xff1a;ARM64是CPU构架的一种&#xff0c;通常用于手机、平板等CPU&#xff0c;目前笔记本电脑也会采用ARM64构架…

SpringBoot案例 调用第三方接口传输数据

一、前言 最近再写调用三方接口传输数据的项目&#xff0c;这篇博客记录项目完成的过程&#xff0c;方便后续再碰到类似的项目可以快速上手 项目结构&#xff1a; 二、编码 这里主要介绍HttpClient发送POST请求工具类和定时器的使用&#xff0c;mvc三层架构编码不做探究 pom.x…

磁力线试验+多图

今天要磨制一个钢针工具。磨下来很多的铁屑&#xff0c;灵机一动&#xff0c;何不来试验一下磁铁的磁力线。这可是难得的材料。 下放7颗强力磁铁&#xff0c;可见强力磁铁的磁力线非常集中。 下放直径4CM的喇叭磁铁 强力磁铁U型铁 强力磁铁E型铁氧体磁芯&#xff0c;可见磁力线…

项目管理工具和方法有哪些:了解项目管理的必备工具和有效方法

先谈谈什么是项目管理&#xff0c;简单直白&#xff0c;就是对项目进行管理。项目管理涉及有效的计划和对工作的系统管理&#xff0c;但很多工具可以使项目管理更有效、更高效。比如&#xff0c;Zoho Projects项目管理工具。 1.项目合理拆解 当确定了项目目标后&#xff0c;无疑…

夏季用电高峰,智慧路灯杆如何助力节能减排

近年来&#xff0c;气温对用电的影响越发突出&#xff0c;持续高温拉动用电负荷快速增加&#xff0c;导致部分地区的电力供需偏紧形势进一步加剧。据媒体报道&#xff0c;今年夏季电力供需形势仍旧紧张&#xff0c;包括安徽、四川、重庆、广东等多地发出节电倡议&#xff0c;包…

驱动 实现三个灯的亮灭

1、编写LED灯的驱动&#xff0c;可以控制三个灯&#xff0c;应用程序中编写控制灯的逻辑&#xff0c;要使用自动创建设备节点机制 head.h #ifndef __HEAD_H__ #define __HEAD_H__#define PHY_LED1_MODER 0x50006000 #define PHY_LED1_ODR 0x50006014 #define PHY_LED1_RCC 0x…

解决git reset --soft HEAD^撤销commit时报错

今天在使用git回退功能的时候&#xff0c;遇到以下错误&#xff1a; 解决git reset --soft HEAD^撤销commit时报错 问题&#xff1a; 在进行完commit后&#xff0c;想要撤销该commit&#xff0c;于是使用了git reset --soft HEAD^命令&#xff0c;但是出现如下报错&#xff1…

Java 的文档注释其实并没有那么简单

Java 的文档注释其实并没有那么简单 我们在写java 程序的只有三种注释方式&#xff1a; “//” 后面跟上想要写入的注释 “/* */” 里面跟上想要写入的注释 “/** */” 说明注释&#xff0c;可以多行之间注释 说明注释允许我们在程序中嵌入关于程序的信息。 我们可以使用…

节点不连续伽辽金方法在求解线性和非线性平流方程中的一维实现(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

嵌入式:ARM Day4

一、自己编写代码实现三盏灯点亮 源码&#xff1a; .text .global _start _start: 进行一次初始化bl RCC_INITbl LED1_INITbl LED2_INITbl LED3_INITb looploop: 循环开关灯bl LED1_ONbl delay_1sbl LED1_OFFbl delay_1sbl LED2_ONbl delay_1sbl LED2_OFFbl delay_1sbl…

13 Web全栈 pnpm

什么是pnpm&#xff1f; 可以理解成performant npm缩写 速度快、节省磁盘空间的软件包管理器 特点 快速- pnpm比其他包管理器快2倍高效- node_modules中的文件链接自特定的内容寻址存储库支持monorepos- 内置支持单仓多包严格- pnpm默认创建了一个非平铺的node_modules 因此代…

Spring中循环依赖解决方案

循环依赖 循环依赖是Spring框架中常见的问题之一&#xff0c;当两个或多个类相互引用对方时&#xff0c;就会出现循环依赖的情况。这种情况下&#xff0c;Spring框架无法确定哪个类应该先实例化和初始化&#xff0c;从而导致异常。常见的解决方法有&#xff1a;构造函数注入、s…

STM32单片机通过串口烧录hex程序

我之前买过一个STM32最小程序单片机&#xff0c;原来下载51单片机都是使用串口方式&#xff0c;这里也通过串口方式烧录STM32单片机&#xff0c;还需要借助一个USB TO TTL工具。 USB TO TTL工具类似一个U盘工具&#xff0c;只不过它另一端是接线&#xff0c;一般电脑会自动安装…

C++入门篇9---list

list是带头双向循环链表 一、list的相关接口及其功能 1. 构造函数 函数声明功能说明list(size_type n,const value_type& valvalue_type())构造的list中包含n个值为val的元素list()构造空的listlist(const list& x)拷贝构造list(InputIterator first, InputIterator…

推荐系统系列之推荐系统概览(上)

在当今信息化高速发展的时代&#xff0c;推荐系统是一个热门的话题和技术领域&#xff0c;一些云厂商也提供了推荐系统的SaaS服务比如亚马逊云科技的 Amazon Personalize 来解决客户从无到有迅速构建推荐系统的痛点和难点。在我们的日常生活中&#xff0c;推荐系统随处可见&…

论文阅读 - Understanding Diffusion Models: A Unified Perspective

文章目录 1 概述2 背景知识2.1 直观的例子2.2 Evidence Lower Bound(ELBO)2.3 Variational Autoencoders(VAE)2.4 Hierachical Variational Autoencoders(HVAE) 3 Variational Diffusion Models(VDM)4 三个等价的解释4.1 预测图片4.2 预测噪声4.3 预测分数 5 Guidance5.1 Class…