Rn视图生成图片并保存到相册

news2024/12/31 4:05:58

在这里插入图片描述
该功能依赖两个组件

完整代码

yarn add react-native-view-shot // 视图生成图片
yarn add expo-media-library  // 保存图片
import { useState, useRef } from 'react'
import ViewShot from "react-native-view-shot"
import { View, Text, Button, Image, StyleSheet } from 'react-native'
import * as MediaLibrary from 'expo-media-library'

export default () => {
    const ctxRef = useRef()
    const [imgUri, setImgUri] = useState()

    const createImg = () => {
        ctxRef.current.capture().then(uri => {
            setImgUri(uri)
        })
    }

    const saveImg = async (item) => {
        const permission = await MediaLibrary.requestPermissionsAsync()
        if (!permission.granted) return
        const asset = await MediaLibrary.createAssetAsync(item)
        MediaLibrary.createAlbumAsync('Images', asset, false).then(() => {
            console.log('保存成功')
        }).catch(() => {
            console.log('保存失败')
        })
    }

    return (
        <View>
            <ViewShot ref={ctxRef} options={{ fileName: `文件名${Date.now()}`, format: "png", result: "tmpfile" }}>
                <View style={styles.content}>
                    <Text>文字占位,文字占位,文字占位,文字占位,文字占位,文字占位</Text>
                    <Text>---------------------手动分割线---------------------</Text>
                    <Image style={styles.logo} source={{ uri: 'https://reactnative.dev/img/tiny_logo.png' }} />
                </View>
            </ViewShot>
            <Button title='生成图片' onPress={() => createImg()} />
            <Image resizeMode="contain" style={styles.pic} source={{ uri: imgUri }} />
            {imgUri && <Button title='保存图片' onPress={() => saveImg(imgUri)} />}
        </View>
    )
}

const styles = StyleSheet.create({
    content: {
        backgroundColor: "#ffffff",
        padding: 20,
    },
    logo: {
        width: 50,
        height: 50,
    },
    pic: {
        width: "100%",
        height: 200,
    }
})

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

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

相关文章

【程序猿包邮送书:第五期】考研408书籍数学书籍大放送,多本书籍任君挑选

&#x1f339;欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 爱书不爱输的程序猿&#xff1a;送书第五期 &#x1f6a9;&#x1f6a9;&#x1f6a9;点击直达福利前言01 《数据结构与算法分析》书籍介绍作者简介目录 02 《计算机网…

【docker-compose 跨节点部署 kafka-kraft SASL用户加密集群】全网最新!

一、概述 文本主要讲解使用Docker-compose在三个节点上部署Kafka3.5.1(现阶段最新版本)-kraft模式&#xff0c;加密使用了用户名密码加密的SASL_PLAINTEXTPLAIN方式。SSL加密在我的docker-compose.yml文件基础上微调一下就好。所有的配置都通过环境变量注入&#xff0c;仅将加…

超详细springcloud sentinel教程~

基础 介绍 Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件&#xff0c;主要以流量为切入点&#xff0c;从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。 基本概念 资源 资源是 Sent…

灰度变换原理//test later

灰度变换原理 图像灰度变换变换原理&#xff1a;通过变换函数T将原图像像素灰度值r映射为灰度值s&#xff1a; 2、灰度反转 2.1原理 灰度反转&#xff1a;将图像亮暗对调&#xff0c;可以增强图像中暗色区域细节 &#xfffd;&#xfffd;(&#xfffd;)&#xfffd;−1−…

无版权素材集合

一、无版权视频素材 1.pixabay 网址: https://pixabay.com/zh/videos/ 特点:没错&#xff0c;还是这个网站&#xff0c;除了图片&#xff0c;还有大量免费正版高清无水印视频素材&#xff0c;无需注册即可直接下载&#xff0c;支文搜索。你可以在任何地方使用 pixabay 的免费…

深度干货:制造进销存国内现状如何?2023年五大制造进销存最新盘点!

制造进销存是什么&#xff1f;制造进销存的发展如何&#xff1f;制造进销存的优势在哪里&#xff1f;制造进销存都能为企业提供什么&#xff1f;本文将带大家深入浅出的聊聊制造进销存&#xff0c;全面剖析制造进销存的前世今生&#xff0c;并且为大家提供2023年十大制造进销存…

WebGL 视图矩阵、模型视图矩阵

目录 立方体由三角形构成 视点和视线 视点、观察目标点和上方向 视点&#xff1a; 观察目标点&#xff1a; 上方向&#xff1a; 在WebGL中&#xff0c;观察者的默认状态应该是这样的&#xff1a; 视图矩阵程序&#xff08;LookAtTriangles.js&#xff09; 实际上&…

红巨星粒子插件 Red Giant Trapcode Suite for mac 2024

Red Giant Trapcode Suite是一款用于在After Effects中模拟和建模3D粒子和效果的软件&#xff0c;由Red Giant Software公司开发。 该软件包包含11种不同的工具&#xff0c;可以帮助用户模拟火、水、烟、雪等粒子效果&#xff0c;以及创建有机视觉效果和3D元素。它还支持在AE与…

机器学习(15)---代价函数、损失函数和目标函数详解

文章目录 一、各自定义二、各自详解三、代价函数和损失函数区别四、例题理解 一、各自定义 1. 代价函数&#xff1a;代价函数&#xff08;Cost Function&#xff09;是定义在整个训练集上的&#xff0c;是所有样本误差的平均&#xff0c;也就是损失函数的平均。它用于衡量模型在…

langchain主要模块(五):Agent以及Wandb

langchain2之Agent以及Wandb langchain1.概念2.主要模块模型输入/输出 (Model I/O)数据连接 (Data connection)链式组装 (Chains)代理 (Agents)内存 (Memory)回调 (Callbacks) 3.AgentAction Agent&#xff1a;Plan-and-Execute-Agent&#xff1a;搜索工具 4.wandb1.注册2.安装…

第七版教材下的PMP考试有多难?

难度没有上升多少的&#xff0c;毕竟新考纲已经考过几轮考试了&#xff0c;如果报了培训班&#xff0c;那是没多大难度&#xff0c;如果自学&#xff0c;也只是难在理解第七版教材&#xff0c;会比第六版难以理解很多&#xff0c;而且第六版的知识也仍然有用&#xff0c;只是相…

Python基础学习笔记1(AI Studio)

地址&#xff1a;飞桨AI Studio星河社区-人工智能学习与实训社区 课程地址&#xff1a;飞桨AI Studio星河社区-人工智能学习与实训社区 课程地址&#xff1a;飞桨AI Studio星河社区-人工智能学习与实训社区 课程地址&#xff1a;飞桨AI Studio星河社区-人工智能学习与实训…

FE_Vue学习笔记 - 数据代理

Vue中的数据代理是一种机制&#xff0c;通过它&#xff0c;Vue实例&#xff08;vm&#xff09;可以代理其数据对象&#xff08;data&#xff09;中的属性操作。这种代理的原理主要是通过Object.defineProperty()方法&#xff0c;将data对象的每个属性都添加到vm对象上&#xff…

2023年8月京东洗衣机行业品牌销售排行榜(京东数据挖掘)

鲸参谋监测的京东平台8月份洗衣机市场销售数据已出炉&#xff01; 根据鲸参谋平台的数据显示&#xff0c;8月份&#xff0c;京东平台上洗衣机的销量共计117万&#xff0c;环比增长约5%&#xff0c;同比下降约8%&#xff1b;销售额为18亿&#xff0c;环比下降约2%&#xff0c;同…

使用SimpleDateFormat类的示例文档

以下是Java中使用SimpleDateFormat类的示例文档&#xff1a; 示例 import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date;public class Main {public static void main(String[] args) {String dateStr…

遥感数据与作物模型同化应用:PROSAIL模型、DSSAT模型、参数敏感性分析、数据同化算法、模型耦合、精度验证等主要环节

查看原文>>>遥感数据与作物模型同化实践技术应用 基于过程的作物生长模拟模型DSSAT是现代农业系统研究的有力工具&#xff0c;可以定量描述作物生长发育和产量形成过程及其与气候因子、土壤环境、品种类型和技术措施之间的关系&#xff0c;为不同条件下作物生长发育及…

【C++】哈希表的实现

哈希是什么理解哈希哈希所用的容器计算key值方法哈希的插入和查找解决哈希冲突闭散列也叫开放寻址法开散列 哈希闭散列实现闭散列结构闭散列结构插入闭散列查找闭散列删除 哈希开散列实现&#xff08;链表式&#xff09;开散列结构开散列结构插入开散列结构查找开散列结构删除 …

事件循环,还在微任务宏任务?过时了,快看看新版浏览器事件循环event loop(message loop)

浏览器的进程模型 进程&#xff1a;程序运⾏需要有它⾃⼰专属的内存空间&#xff0c;可以把这块内存空间简单的理解为进程。每个应⽤⾄少有⼀个进程&#xff0c;进程之间相互独⽴&#xff0c;即使要通信&#xff0c;也需要双⽅同意。 线程&#xff1a;有了进程&#xff0c;就…

【机器学习习题】估计一个模型在未见过的数据上的性能

您提到的不等式是统计学中的泛化误差界&#xff08;generalization error bound&#xff09;&#xff0c;它用于估计一个模型在未见过的数据上的性能。这个不等式是由Hoeffding不等式和Union Bound组合而成的。在这个不等式中&#xff0c;我们有以下符号&#xff1a; - P[|E_i…

Linux安装JDK1.8并配置环境变量

Linux安装JDK并配置环境变量Linux安装JDK并配置环境变量Linux安装JDK并配置环境变量 一、查询已有JAVA环境版本信息 java -version 二、下载Oracle JDK安装包 https://www.oracle.com/java/technologies/downloads/archive/ 三、安装 配置JDK 以下方式适用于安装各版本JDK&…