Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

235
Visualizações
cuando copie el elemento con la imagen de fondo y cree un archivo png a partir de él usando blob, obtenga una imagen incorrecta

problema almacenado en caché al copiar el elemento con la imagen de fondo y crear un archivo png a partir de él usando blob, obtener la imagen incorrecta

  1. Tengo un elemento div con una imagen de fondo:
  2. Creé un nuevo archivo png a partir de ese div.
  3. Cambié la imagen en el div (URL diferente), en el HTML todo se ve bien
  4. Convierta nuevamente este div a un archivo png
  5. Obtener la primera imagen de fondo en el archivo png

*) si actualizo la página y luego cambio la imagen de fondo del div y luego creo a partir de él el archivo png, funcionará...

 <div class="d-flex d-flex-1-1-auto" style="background-image: url("https://fe.io/webresources/image/show/img.png?path=dashboard/1679941/bb41d1d0-6e01-4c4d-b3bb-de3724122b1d.jpg";); background-repeat: no-repeat; background-size: contain; background-position: center center; margin-left: 0px; margin-top: 0px;">

Creé un nuevo contenedor div y le copié los datos.

 const container = this.dom.query(SCREENSHOT_CONTAINER_SELECTOR); const clonedDashboard = dashboard.cloneNode(true) as HTMLElement; this.dom.appendChild(container, clonedDashboard);

de lo que lo convierto en lienzo:

 canvas = (const options: html2ImageOptions = { width: element.scrollWidth, height: element.scrollHeight, ...html2ImageOptions, }; return htmlToImage[format](element, options);)();

y luego usando el lienzo y creando a partir de él un archivo png

 new Promise((resolve) => extraCanvas.toBlob(resolve, 'image/png')

luego el archivo de retorno de resolución (blob) y cuando llamo a

 const url = URL.createObjectURL(file); console.log(url);

La primera vez, veo ese png que muestra el div con la imagen correcta. después de eso (cuando no se actualiza) Y cambié la imagen de fondo para que sea otra imagen... Lo veo correctamente en la página, pero cuando abro el archivo png que se creó, veo que el png contiene un div con el imagen de fondo de la imagen anterior que se seleccionó

en HTML muestra la foto correcta. en el archivo png, muestra la primera foto seleccionada (probablemente se almacenó en caché en el archivo creado procesado, blob)

¿Cómo puedo resolverlo? Obtengo una imagen que representa el div con el fondo de la imagen anterior.

Después de una actualización, funciona bien, la nueva imagen se refleja como se esperaba en el archivo png

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

El problema de almacenar en caché el resultado del blob está relacionado con la cadena de consulta en la URL.

Incluso la URL de la imagen de fondo era diferente entre sí, eran diferentes después de la cadena de consulta.

la solución fue cambiar la URL antes de la cadena de consulta y luego el blob no ve estas URL como iguales y no las toma del caché

 const queryString = '?'; const imageSelector = this.dom.query(this.imageWidgetSelector, widgetElement); const imageDivArr = imageSelector.getElementsByTagName('div'); if (imageDivArr.length > 0) { const backgroundImageDivURL = imageDivArr[0].style.backgroundImage; const backgroundImageDivURLParts = backgroundImageDivURL.split(queryString); const urlWithoutQueryString = `${backgroundImageDivURLParts[0]}${Date.now()}${index}`; const backgroundImageDivURLWithAdditionalInfo = `${urlWithoutQueryString}${queryString}${backgroundImageDivURLParts[1]}`; imageDivArr[0].style.backgroundImage = backgroundImageDivURLWithAdditionalInfo;
about 4 years ago · Juan Pablo Isaza Relatório

0

Necesitas publicar más código.

¿Cómo estás cambiando la imagen sin actualizar? Y también, después de cambiar la imagen, ¿está clonando nuevamente el div y luego recreando el lienzo? O si solo cambia la imagen y nunca vuelve a clonar el div, entonces el lienzo está usando el div anterior.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda