Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

469
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda