gre / react-native-view-shot

Snapshot a React Native view and save it to an image
https://github.com/gre/react-native-view-shot-example
MIT License
2.64k stars 344 forks source link

Image Quality is too low while i am taking view shot of my screen #505

Open krupal811 opened 7 months ago

krupal811 commented 7 months ago

const onFinalSave = async () => { const targetPath = Platform.OS === 'ios' ? ${RNFS.DocumentDirectoryPath}/${imageName} : ${RNFS.DownloadDirectoryPath}/${imageName}; const uri = await viewShotRef.current.capture(); const imageBuffer = await RNFS.readFile(uri, 'base64'); const imagePath = ${RNFS.DocumentDirectoryPath}/Pictures/${v4()}.jpg; await RNFS.writeFile(imagePath, imageBuffer, 'base64'); RNFS.exists(imagePath).then(async status => { if (status) { if (Platform.OS === 'ios') { RNFetchBlob.config({ fileCache: true, appendExt: 'jpg', }) .fetch('GET', file://${imagePath}) .then(res => { console.log({res}); CameraRoll.save(res.data, {type: 'photo'}) .then(() => { setTimeout(() => { navigation.navigate('Result', { img_data: { path: file://${imagePath}, ...imgActualDimension, }, }); }, 500); analyticsFunction('image_saved_to_download', {isSaved: true}); }) .catch(err => { Alert.alert( 'Save Image', 'Failed to save Image: ' + err.message, [{text: 'OK', onPress: () => console.log('OK Pressed')}], {cancelable: false}, ); }); }) .catch(error => { Alert.alert( I18n.t('Save_Image'), I18n.t('Failed_to_save_Image') + error.message, [ { text: I18n.t('ok'), onPress: () => console.log('OK Pressed'), }, ], {cancelable: false}, ); }); } else { await RNFS.copyFile(file://${imagePath}, targetPath) .then(() => { RNFS.scanFile(targetPath) .then(() => { setTimeout(() => { navigation.navigate('Result', { img_data: { path: file://${imagePath}, ...imgActualDimension, }, }); }, 500); analyticsFunction('image_saved_to_download', {isSaved: true}); }) .catch(scanError => { console.log('Error scanning file:', scanError); }); }) .catch(err => { Alert.alert( 'Save Image', 'Failed to save Image: ' + err.message, [{text: 'OK', onPress: () => console.log('OK Pressed')}], {cancelable: false}, ); }); } } else { console.log('File not exists'); } }); };