I’m trying to transfer an image file data from one node.js script to another.
I read the image file in ‘parameter.js’ using ‘readfilesync’, then transfer it to another script ‘convert.js’.
convert.js is meant to re-convert the file data back to an image using WriteFile
– and it seems to do a good job.
However, when I try to open the newly created file, I get the error like;
This is not a valid bitmap file, or its format is not currently supported.
Could you help me spot the problem?
Thanks for your help!
parameter.js
:
JavaScript
x
31
31
1
// Path to image file
2
let datasetRoute = resolve('./app/scripts/myphotos/bubbles1.png');
3
4
// Get image file
5
let file = readDataset();
6
7
// Function to get image file
8
function readDataset() {
9
10
try {
11
12
// Fetch dataset using new 'currentPage' number
13
return fs.readFileSync(datasetRoute, 'utf8');
14
}
15
16
catch (err) {
17
return err;
18
}
19
}
20
21
// Create parameter function
22
const parameterFunctions = {
23
24
// Define function parameters
25
26
// Parameter 1
27
parameter1: file, // set parameter1 as value of file
28
29
}
30
31
convert.js
:
JavaScript
1
8
1
var bytes = params.uParams[0].parameter1.replace(/^data:image/png;base64,/, "");
2
3
fs.writeFileSync('app/scripts/media/test.png', bytes, 'base64', (err) => {
4
if (!err)
5
console.log(`Image saved!`);
6
});
7
8
Advertisement
Answer
Converted the entire operation into a simple read and write ‘binary’ format.
Finally worked!
Here’s the code:
parameter.js:
JavaScript
1
32
32
1
2
// Path to image file
3
let datasetRoute = resolve('./app/scripts/myphotos/bubbles1.png');
4
5
// Get image file
6
let file = readDataset();
7
8
// Function to get image file
9
function readDataset() {
10
11
try {
12
13
// Fetch dataset using new 'currentPage' number
14
return fs.readFileSync(datasetRoute, 'binary');
15
}
16
17
catch (err) {
18
return err;
19
}
20
}
21
22
// Create parameter function
23
const parameterFunctions = {
24
25
// Define function parameters
26
27
// Parameter 1
28
parameter1: file, // set parameter1 as value of file
29
30
}
31
32
convert.js:
JavaScript
1
8
1
var bytes = params.uParams[0].parameter1;
2
3
fs.writeFileSync('app/scripts/media/test.png', bytes, 'binary', (err) => {
4
if (!err)
5
console.log(`Image saved!`);
6
});
7
8