【HarmonyOS】鸿蒙应用实现截屏

news2024/12/24 3:06:01

【HarmonyOS】鸿蒙应用实现截屏

组件截屏

在这里插入图片描述
通过componentSnapshot的get函数,将需要截图的组件设置id传进去即可。

import { componentSnapshot } from '@kit.ArkUI';
import { image } from '@kit.ImageKit';


/**
 * 截图
 */



struct SnapShotPage {

   mImageSnapShot: image.PixelMap | null = null;

   ImgStyle(){
    .size({
      width: px2vp(350),
      height: px2vp(350)
    })
  }

  build() {
      Column(){
        Blank()

        // 参照图片
        Image($r("app.media.icon_img"))
          .ImgStyle()
          .id("target")
          .autoResize(true)

        Blank()

        // 展示截图
        Image(this.mImageSnapShot)
          .ImgStyle()
          .backgroundColor(Color.Blue)

        Blank()

        Button("点击截图参照图片控件")
          .onClick(()=>{
            componentSnapshot.get("target", (error: Error, pixmap: image.PixelMap)=>{
              if (error) {
                console.log("SnapShotDebug", "error: " + JSON.stringify(error));
                return;
              }
              console.log("SnapShotDebug", "pixmap: " + JSON.stringify(pixmap));
              this.mImageSnapShot = pixmap;
            });
          })

        Blank()
    }
    .size({
      width: "100%",
      height: "100%"
    })
  }
}

示例效果请以真机运行为准,当前 IDE 预览器不支持。

流媒体截屏

对于使用XComponent的场景,例如:Video或者相机流媒体展示类组件,不建议使用组件截图相关接口,建议从surface直接获取图片。效率更高些。

  private cutImage(surfaceId: string){
    let region: image.Region = { 
      x: 0, 
      y: 0, 
      size: 
      { 
        height: 100, 
        width: 100 
      } 
    };
    
    image.createPixelMapFromSurface(surfaceId, region).then(() => {
      console.info("SnapShotDebug", 'Succeeded in creating pixelmap from Surface');
    }).catch((error: BusinessError) => {
      console.error("SnapShotDebug", `Failed to create pixelmap. code is ${error.code}, message is ${error.message}`);
    });
  }

关于如何屏蔽截屏行为,参见这篇文章。设置当前需要屏蔽截屏业务的容器窗口为,隐私窗口即可。【HarmonyOS】应用屏蔽截屏和录屏

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

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

相关文章

16.2 商品秒杀场景处理

16.2 商品秒杀场景处理 1. 秒杀业务流程解析2. 限速手段************************************************************************ 1. 秒杀业务流程解析 VIP秒杀 通过前端验证码限速 2. 限速手段 ********************************************************************…

VMware虚拟机Ubuntu20.04的安装和配置

Ubuntu20.04和VMware安装 Windows系统下Ubuntu20.04镜像源下载:Ubuntu20.04系统下载 VMware下载 百度网盘链接:https://pan.baidu.com/s/1Fp6GYPDFksEGCNZ0JikfAg 提取码: 8jhs 虚拟机配置Ubuntu 打开VMware点击创建新的虚拟机 - > 典型 - …

golang Goroutine协程和Channel管道

同步/并发/并行概念 在计算机科学和软件开发中,同步、并发和并行是三个重要的概念,它们描述了程序执行的不同方式 同步 (Synchronization) 定义:同步指的是一种操作或任务在进行时,调用者需要等待该操作或任务完成才能继续执行…

SD-WAN组网技术的九大应用场景

SD-WAN组网,即软件定义广域网,为企业提供了高效、灵活且安全的网络连接。这种新兴网络技术不仅改变了传统WAN的组网方式,更带来了诸多应用场景和解决方案。接下来,我们将深入探讨SD-WAN的主要应用场景。 1、首先,SD-WA…

[Bugku] MISC-CTF靶场系列系列详解⑤!!!

平台为“山东安信安全技术有限公司”自研CTF/AWD一体化平台,部分赛题采用动态FLAG形式,避免直接抄袭答案。 平台有题库、赛事预告、工具库、Writeup库等模块。 ------------------------------ 社工-进阶收集 开启环境: --------- 下载附件…

医院AR导航系统的实现:科技助力智慧医疗构建

在快节奏的现代医疗环境中,患者与医护人员对高效、便捷的院内导航需求日益增长。随着科技的飞速发展,传统的纸质地图已难以满足复杂多变的医疗空间需求。在此背景下,集成AR(增强现实)技术的院内导航系统应运而生&#…

3.表的操作

目录 创建表 创建表案例: 查看表结构 修改表 1.增加新列 2.修改列的属性 3.删除列 4.修改表名 5.修改列 删除表 创建表 语法: CREATE TABLE [IF NOT EXISTS] table_name(field1 datatype1 [COMMENT 注释信息],field2 datatype2 [COMMENT 注释…

华清day7 24-8-5

文章目录 使用有名管道实现,一个进程用于给另一个进程发消息,另一个进程收到消息后,展示到终端上,并且将消息保存到文件上一份使用有名管道实现两个进程间相互通信 使用有名管道实现,一个进程用于给另一个进程发消息&a…

WPF学习(1)-Grid控件(网格布局)

Grid控件其实是一个窗体的默认控件,我们创建一个WPF应用程序后,其主窗体里面会有一个Grid控件。 Grid有两个非常关键的属性ColumnDefinitions和RowDefinitions,分别表示列的数量集合和行的数量集合。 ColumnDefinitions集合中的元素类型是…

终于有人把华为认证全部说清楚了

在信息技术领域,华为认证好比一座金字招牌,吸引着无数技术专业人士的青睐。 市场上关于华为认证的声音纷繁复杂,存在不少争议,让人难以辨别真伪。 今天就来好好讲讲华为认证,从头到尾都帮你盘盘清楚。 01 华为认证是…

论文辅导 | 基于二次分解和BO-BiLSTM组合模型采煤工作面瓦斯涌出量预测方法研究

辅导文章 模型描述 结合变分模态分解(VMD)、自适应噪声完备经验模态分解(CEEMDAN)、贝叶斯优化算法(BO)和双向长短期记忆神经网络(BiLSTM)这4种时间序列处理方法,建立了…

EKMA曲线及大气O3来源解析实践技术

目前,大气臭氧污染成为我国“十四五”期间亟待解决的环境问题。臭氧污染不仅对气候有重要影响,而且对人体健康、植物生长均有严重损害。为了高效、精准地治理区域大气臭氧污染,首先需要了解导致臭氧生成的主要前体物。因此,EKMA曲…

图的DFS

LeetCode2368 受限条件下可到达节点的数目 class Solution { public:int dfs(vector<vector<int>>& g,int x,int fa){int sum1;for(int y:g[x]){if(y!fa) sumdfs(g,y,x);}return sum;}int reachableNodes(int n, vector<vector<int>>& edges, …

C#—串口和网口之间的通信详解

C#—串口和网口之间的通信 串口转网口、网口转串口&#xff0c;就是将网口发送来的数据包发送给串口设备&#xff0c;将串口设备返回的数据转发给网口客户端。 在C#中&#xff0c;将串口数据转换为网络数据并发送到网络&#xff0c;通常涉及以下步骤&#xff1a; 1. 创建一个…

C# Unity 面向对象补全计划 七大原则 之 里氏替换(LSP) 难度:☆☆☆ 总结:子类可以当父类用,牛马是马,骡马也是马

本文仅作学习笔记与交流&#xff0c;不作任何商业用途&#xff0c;作者能力有限&#xff0c;如有不足还请斧正 本系列作为七大原则和设计模式的进阶知识&#xff0c;看不懂没关系 请看专栏&#xff1a;http://t.csdnimg.cn/mIitr&#xff0c;尤其是关于继承的两篇文章&#xff…

相机无须标定,使用基础矩阵F实现多相机内参自标定

Abstract 从给定的基本矩阵中进行两个摄像头的自我校准问题是几何计算机视觉中的基本问题之一。在已知主点和正方形像素的假设下&#xff0c;Bougnoux公式提供了一种计算两个未知焦距的方法。然而&#xff0c;在许多实际情况下&#xff0c;由于常见的奇异性&#xff0c;公式会…

xshell无法连接Ubuntu20.4

在之前红帽版本里&#xff0c;直接下了就可以用xshell直接连接&#xff0c;但是Ubuntu20.4不能直接连接&#xff0c;我开始以为是密码错了&#xff0c;但是我想了想vscode连接不需要密码&#xff0c;一样连接不上&#xff0c;我就在网上找了很多方法&#xff0c;最后终于连接上…

总线学习4--UART

想来串口通信是我第一次接触嵌入式就知道的&#xff0c;一直调试也是用串口线&#xff0c;但是里面的原理还真不清楚。这次难得把环境弄出来了&#xff0c;就顺便学学。 一 环境搭建 还是老规矩&#xff0c;废话不多说&#xff0c;干就完事。 这次用的树莓派zero小板&#x…

云计算实训19——上线一个静态的前端系统(续)

上线一个静态的前端系统(续) 准备工作 在eleme服务器上&#xff1a; 启动服务 启动rpcbind [rooteleme-static ~]# systemctl restart rpcbind 启动nfs [rooteleme-static ~]# systemctl restart nfs 在static-server主机上&#xff1a; 1.重启服务 启动smb [rootstatic…

重塑汽车制造未来:3D插图技术大师,零误差高效驱动新时代

在当今快速革新的汽车制造领域&#xff0c;高效、精准的产品设计与制造流程已成为众多车企破浪前行的核心引擎。但随着市场竞争的日益激烈&#xff0c;在产品设计与制造中&#xff0c;传统二维CAD设计的局限性越发明显——设计周期长、沟通成本高、错误频发及资源利用低效等问题…