Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

463
Views
Cambiar el tamaño de las imágenes con nitidez antes de cargarlas en el almacenamiento en la nube de Google

Intenté cambiar el tamaño o comprimir una imagen antes de cargarla en el almacenamiento en la nube de Google. La carga funciona bien, pero el cambio de tamaño no parece funcionar.

Aquí está mi código:

 const uploadImage = async (file) => new Promise((resolve, reject) => { let { originalname, buffer } = file sharp(buffer) .resize(1800, 948) .toFormat("jpeg") .jpeg({ quality: 80 }) .toBuffer() const blob = bucket.file(originalname.replace(/ /g, "_")) const blobStream = blob.createWriteStream({ resumable: false }) blobStream.on('finish', () => { const publicUrl = format( `https://storage.googleapis.com/${bucket.name}/${blob.name}` ) resolve(publicUrl) }).on('error', () => { reject(`Unable to upload image, something went wrong`) }) .end(buffer) })
over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Me encontré con el mismo problema con un proyecto en el que estaba trabajando. Después de muchas pruebas y errores, encontré la siguiente solución. Puede que no sea el más elegante, pero funcionó para mí.

En mi función de ruta de carga, creé un nuevo objeto de imagen en miniatura con los valores del archivo original y lo pasé como parámetro de archivo a la función uploadFile para el almacenamiento en la nube de Google.

Dentro de mi función de ruta de carga de imágenes:

 const file = req.file; const thumbnail = { fieldname: file.fieldname, originalname: `thumbnail_${file.originalname}`, encoding: file.encoding, mimetype: file.mimetype, buffer: await sharp(file.buffer).resize({ width: 150 }).toBuffer() } const uploadThumbnail = await uploadFile(thumbnail);

Mi función de archivo de carga de almacenamiento en la nube de Google:

 const uploadFile = async (file) => new Promise((resolve, reject) => { const gcsname = file.originalname; const bucketFile = bucket.file(gcsname); const stream = bucketFile.createWriteStream({ resumable: false, metadata: { contentType: file.mimetype } }); stream.on('error', (err) => { reject(err); }); stream.on('finish', (res) => { resolve({ name: gcsname }); }); stream.end(file.buffer); });
over 4 years ago · Santiago Trujillo Report

0

Creo que el problema es con toFormat() . Esa función no existe en los Docs. ¿Puedes intentar quitarlo y comprobar si funciona?

 sharp(buffer) .resize(1800, 948) .jpeg({ quality: 80 }) .toBuffer()
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!