4 pièce(s) jointe(s)
Cacher une image dans une autre image
Salut,
Voilà j'ai développé un script permettant de cacher une image dans une autre image mais eh il ne fonctionne pas extrêmement bien.
Image de base :
Pièce jointe 264189
Image à cacher :
Pièce jointe 264194
Image quand je cherche l'image caché :
Pièce jointe 264199
Comme vous pouvez voir ce n'est pas excellent et encore j'ai pris des images ou mon script marche assez bien ^^, je sais pertinament que c'est une erreur stupide mais j'ai tellement passé de temps dessus que j'arrive pas à voir ou cela cloche c'est pour cela que je fais appel à votre aide.
Mon script pour cacher l'image
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| function lol () {
for ( x = 0; x < PixelsImage.width; x += 1 ) {
for ( y = 0; y < PixelsImage.height; y+= 1) {
for ( z = 0; z < 4; z +=1 ){
let pos = ((x * PixelsImage.height) + y ) * 4 + z
var pixel = PixelsImage.data[pos]
var pixelCache = PixelsImage_image_a_cacher.data[pos] || 0
if (z==3) {
//Quand on est au valeur de l'opacité on garde les 4 premières valeur
var hPixel = (pixel & 0b11111000)
// là on récupére le bit le pluys lourd du rouge / vert / bleu
var lPixel = ((PixelsImage_image_a_cacher.data[pos-3] & 0b10000000) >>> 7) | ((PixelsImage_image_a_cacher.data[pos-2] & 0b10000000) >>> 6) | ((PixelsImage_image_a_cacher.data[pos-1] & 0b10000000) >>> 5)
}
else {
var hPixel = (pixel & 0b11111000)
var lPixel = ((pixelCache & 0b01110000) >>> 4 )
}
var newPixel = hPixel | lPixel
PixelsImage.data[pos] = newPixel
}
}
}
ctx.putImageData(PixelsImage,0,0);
} |
Mon script pour retrouver l'image
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| function go() {
for ( x = 0; x < PixelsImage.width; x += 1 ) {
for ( y = 0; y < PixelsImage.height; y+= 1) {
for ( z = 0; z < 4; z +=1 ){
let pos = ((x * PixelsImage.height) + y ) * 4 + z
var pixel = PixelsImage.data[pos]
if (z==0){
// On récupére le bit le plus faible de l'opacité qui correspond au rouge
var newPixel = ( (PixelsImage.data[pos+3] << 7) & 0b10000000 ) | (( pixel & 0b111) << 4 )
}
else if (z==1){
// On récupére le dexuième bit plus faible de l'opacité qui correspond au vert
var newPixel = ( (PixelsImage.data[pos+2] << 6) & 0b10000000 ) | (( pixel & 0b111) << 4 )
}
else if (z==2){
// On récupére le troisiéme bit plus faible de l'opacité qui correspond au bleu
var newPixel = ((PixelsImage.data[pos+1] << 5) & 0b10000000) | (( pixel & 0b111) << 4 )
}
else {
// et la je met l'opacité qui vaut 255 forcément
var newPixel = 255
}
PixelsImage.data[pos] = newPixel
}
}
}
ctx.putImageData(PixelsImage,0,0);
} |
Voilà aussi un petit schéma pour résumé comment mon script fonctionne :
Pièce jointe 264200
Merci d'avance de votre aide.