react native 截图并生存到相册

[复制链接]
发表于 2024-7-20 20:11:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
首先需要三个包

  • react-native-view-shot (截图,将图片生存到临时路径)
  • react-native-fs (更改图片路径,从临时路径移出来)
  • react-native-camera-roll/camera-roll (将图片生存到相册)
直接上代码
  1. import ViewShot from "react-native-view-shot";
  2. <ViewShot
  3.     ref={viewShotRef}
  4.     options={{ format: "jpg", quality: 0.9 }}
  5.   >
  6.     <View />
  7. </ViewShot>
复制代码
这个是页面上,你要生存的截图使用ViewShot组件包括起来。
然后使用capture方法 获取截图的临时地点。
因为ios是不支持直接将临时图片生存到相册里的。
这里你还需要使用RNFS.moveFile将临时图片移动到一个恒久目录下,然后再调用生存相册方法。
  1. const captureAndSaveScreenshot = async (viewShotRef: any) => {
  2.         try {
  3.             const uri = await viewShotRef.current.capture({
  4.                 format: 'jpg',
  5.                 quality: 0.9,
  6.                 result: 'tmpfile',
  7.                 snapshotContentContainer: true
  8.             });
  9.             const fileName = `screenshot_${Date.now()}.jpg`;
  10.             const destPath = `${RNFS.DocumentDirectoryPath}/${fileName}`;
  11.             console.log(destPath, 'destPath');
  12.             await RNFS.moveFile(uri, destPath);
  13.             const savedAsset = await CameraRoll.saveAsset(destPath);
  14.             const photoUri = savedAsset.node.image.uri;
  15.             return photoUri || destPath;
  16.         } catch (error) {
  17.             console.error('截图失败', error);
  18.             throw error;
  19.         }
  20.     };
复制代码
此处的photoUri是当地路径 ph:/ 开头的,destPath是一个恒久路径。根据需要使用对应的路径地点

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告
回复

使用道具 举报

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5

GMT+8, 2025-7-3 10:56 , Processed in 0.231576 second(s), 32 queries 手机版|qidao123.com技术社区-IT企服评测▪应用市场 ( 浙ICP备20004199 )|网站地图

快速回复 返回顶部 返回列表