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

154
Visualizações
¿Cómo leer los valores de transparencia de píxeles individuales de un usuario enviado PNG en el front-end?

Necesito leer el valor de transparencia para cada píxel de un PNG enviado por el usuario, en el front-end.

En este momento, estoy bloqueando el envío del formulario y convierto el PNG en la entrada del archivo en un objeto FileReader. Ahora estaba pensando que simplemente podría leer los valores de transparencia de esos datos. Por ejemplo, convertí a ArrayBuffer y luego a Uint8Array, y esa es una gran variedad de enteros cuyos valores van de 0 a 255, pero no parecen los colores correctos.

Luego leí que en realidad debes mostrar el PNG en un lienzo HTML5 para hacer esto.

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

0

el búfer png no contiene los datos de píxeles de una manera legible, está comprimido para que no pueda leerlo como le gustaría. tiene que obtener los píxeles de alguna manera, la forma más sencilla es usar createImageBitmap (archivo) para convertirlo en un mapa de bits y luego usar OffscreenCanvas para pintar el mapa de bits y leerlo usando getImageData . De esta manera, puede leer más que solo pngs. .. y también usándolo en subprocesos de trabajo

 // simulate getting a file you would get from eg file input (1x1 pixel) fetch('data:;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==') .then(r => r.blob()) .then(createImageBitmap) .then(readData) /** @param {ImageBitmap} bitmap */ function readData (bitmap) { const { width: w, height: h } = bitmap const canvas = new OffscreenCanvas(w, h) const ctx = canvas.getContext('2d') ctx.drawImage(bitmap, 0, 0) const pixels = ctx.getImageData(0, 0, w, h).data // read alpha channel for (let i = 0; i < pixels.length; i += 4) { console.log(pixels[i + 3]) } }

about 4 years ago · Juan Pablo Isaza Relatório

0

PNG no contiene los datos de la imagen sin procesar, pero está comprimido. Para decodificarlo, necesitas hacer algunos cálculos complejos. Cárguelo en un <canvas> y deje que el navegador haga la decodificación:

 <canvas id="myCanvas"></canvas> <input type="file" accept="image/png, image/gif, image/jpeg" id="myFileInput" /> <script> const canvas = document.getElementById('myCanvas'); const context = canvas.getContext("2d"); const fileInput = document.getElementById('myFileInput'); fileInput.onchange = function(changeEvent) { const files = changeEvent.target.files; const file = files[0]; const reader = new FileReader(); reader.readAsDataURL(file); reader.onload = function(loadEvent){ const image = new Image(); image.src = loadEvent.target.result; canvas.width = image.width; canvas.height = image.height; context.drawImage(image, 0, 0); const imageData = context.getImageData(0, 0, image.width, image.height); console.log(imageData) // see https://stackoverflow.com/a/667074/17870699 } }; </script>
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