react-native-view-shot
react-native-view-shot copied to clipboard
Image Quality is too low while i am taking view shot of my screen
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');
}
});
};