Snapshot a view and save to an image.
The image will be stored in a temporary file that will only exist for as long as the app is running.
npm install --save react-native-view-shot
react-native link react-native-view-shot
Libraries
➜ Add Files to [your project's name]
node_modules
➜ react-native-view-shot
and add RNViewShot.xcodeproj
libRNViewShot.a
to your project’s Build Phases
➜ Link Binary With Libraries
Cmd+R
)<android/app/src/main/java/[...]/MainActivity.java
import com.reactlibrary.RNViewShotPackage;
to the imports at the top of the filenew RNViewShotPackage()
to the list returned by the getPackages()
methodandroid/settings.gradle
:
include ':react-native-view-shot'
project(':react-native-view-shot').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-view-shot/android')
android/app/build.gradle
:
compile project(':react-native-view-shot')
No support yet. Feel free to PR.
import { findNodeHandle } from "react-native";
import RNViewShot from "react-native-view-shot";
RNViewShot.takeSnapshot(findNodeHandle(aRef), {
format: "jpeg",
quality: 0.8
})
.then(
uri => console.log("Image saved to", uri),
error => console.error("Oops, snapshot failed", error)
);
Checkout react-native-view-shot-example
RNViewShot.takeSnapshot(view, options)
Returns a Promise of the image URI.
view
references to a React Native component.options
may include:
width
/ height
(number): the width and height of the image to capture.format
(string): either png
or jpg
/jpeg
or webm
(Android). Defaults to png
.quality
(number): the quality. 0.0 - 1.0 (default). (only available on lossy formats like jpeg)Snapshots are not guaranteed to be pixel perfect. It also depends on the platform. Here is some difference we have noticed and how to workaround.