es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La manipulación de píxeles no funciona en algunas imágenes.

Estoy intentando extraer solo el texto blanco de la imagen utilizando la manipulación de píxeles, pero no funciona en algunas imágenes.
Funciona en https://prnt.sc/24q29qu pero no en https://prnt.sc/24pymne
Por favor, vea el código utilizado y simplemente puede pegar el código en la consola para ver la salida. Lo probé en el navegador Chrome. Puede hacer clic en la salida en la consola para ver la salida de la imagen.

var imageSource = document.querySelector("body > div.image-constrain.js-image-wrap > div > div > img")

var width = 2*imageSource.width;
var height = 2*imageSource.height;

var img = new Image();
img.crossOrigin = 'anonymous';
img.src = imageSource.src;
var c = document.createElement("canvas")
c.width = width;
c.height = height;
var ctx = c.getContext("2d");
ctx.drawImage(img, 0, 0);

var imageData = ctx.getImageData(0, 0, width, height);
var data = imageData.data;
console.log(data);
// Replacing All the pixels except white
for (let i = 0; i < data.length; i += 4) {
    if(data[i] != 255) {
        data[i] = 0;
    }
    if(data[i+1] != 255) {
        data[i+1] = 0;
    }
    if(data[i+2] != 255) {
        data[i+2] = 0;
    }
    if(data[i+3] != 255) {
        data[i+3] = 0;
    }
}

console.log(imageData.data);  
 ctx.putImageData(imageData, 0, 0);


    img.src = c.toDataURL();
    pixelatedImage = c.toDataURL();
    console.log(pixelatedImage);
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el código de manipulación de píxeles solo funciona en ciertas imágenes y no en otras. El código toma una fuente de imagen y crea un lienzo con el doble de ancho y altura de la imagen. Luego dibuja la imagen en el lienzo y recupera los datos de píxeles utilizando getImageData. El bucle for reemplaza todos los píxeles excepto los blancos estableciendo sus valores en 0. Finalmente, los datos de píxeles modificados se muestran utilizando console.log y el lienzo se actualiza con los datos modificados utilizando putImageData.

    Para resolver el problema donde el código de manipulación de píxeles no funciona en algunas imágenes, es posible que necesite investigar las imágenes específicas que no funcionan para ver si existen diferencias en su composición de color u otros factores que puedan hacer que el código falle. Además, es posible que necesite modificar el código para tener en cuenta cualquier diferencia en la forma en que se procesan ciertas imágenes.

Comments are closed.