gm icon indicating copy to clipboard operation
gm copied to clipboard

.stream() corrupting images?

Open yussefsoudan opened this issue 4 years ago • 1 comments

Hi,

I have the following setup.

Server side:

function convertImage(inputStream) {
	return gm(inputStream)
		.contrast(-2)
		.stream();
}

app.get('/resize/:imgDetails', (req, res, next) => {
  let params = req.params.imgDetails.split('&');
  let fileName = params[0]; console.log(fileName);
  let tileType = params[1]; console.log(tileType);
  res.set('Content-Type', 'image/jpeg');
  let url = `https://${process.env.Bucket}.s3.amazonaws.com/images/${tileType}/${fileName}`;
  convertImage(request.get(url)).pipe(res);
})


Client side:

axios.get('/resize/' + fileName + '&' + tileType)
    .then(res => {
     /** PUT FILE ON AWS **/
      var img = res;

      axios.post("/sign_s3_sized", {
        fileName : fileName,
        tileType : tileType,
        ContentType : 'image/jpeg'
      })
      .then(response => {
        var returnData = response.data.data.returnData;
        var signedRequest = returnData.signedRequest;
        var url = returnData.url;
        this.setState({url: url})
        
        // Put the fileType in the headers for the upload
        var options = {
          headers: {
            'Content-Type': 'image/jpeg'
          }
        };

        axios.put(signedRequest,img, options)
        .then(result => {
          this.setState({success: true});
        }).bind(this)
        .catch(error => {
          console.log("ERROR: " + JSON.stringify(error));
        })
      })
      .catch(error => {
        console.log(JSON.stringify(error));
      })
})
.catch(error => console.log(error))

Before going any further, I can assure you now that uploading any images via this setup minus the convertImage() works, otherwise the image gets put on S3 corrupted.

Any pointers as to what the issue behind the image being corrupted is? Is my understanding of streams here lacking perhaps? If so, what should I change?

Thank you!

yussefsoudan avatar Sep 09 '19 21:09 yussefsoudan

This might be related to #654. But without a sample file it is impossible to tell.

JaimeObregon avatar Feb 04 '21 19:02 JaimeObregon