J'ai utilisé ce code pour essayer exactement d'avoir le code RGB de la couleur:problème en couleurs et en toile Javascript
var huePixel = HueCanvas.css('background-color').match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);//["rgb(0, 70, 255", "0", "70", "255"]
var svPixel = SVCanvas.get(0).getContext("2d").getImageData(satPos,valPos,1,1).data;
//opacity*original + (1-opacity)*background = resulting pixel
var opacity =(svPixel[3]/255);
var r =parseInt((opacity*svPixel[0])+((1-opacity)*huePixel[1]));
var g =parseInt((opacity*svPixel[1])+((1-opacity)*huePixel[2]));
var b =parseInt((opacity*svPixel[2])+((1-opacity)*huePixel[3]));
Le problème est que dans certains pixels, le RGB est pas exactement la même chose. Si j'utilise Math.round parseInt il y a plus de problèmes, et plus de pixels ont peu de changements que les vrais.
Je sais que le problème est dans var opacity =(svPixel[3]/255);
, mais je ne sais pas comment mettre l'équation pour ne pas avoir ces problèmes.
Merci de votre attention.
Quelle est la valeur de svPixel avant de définir l'opacité? – EMMERICH
svPixel [3] va de 0 à 255. –
Est-ce que vous changez juste un pixel ou avez-vous l'intention de mélanger le contenu de la toile entière avec l'arrière-plan? Si vous définissez des pixels de canevas avec une opacité <255, ils se fondent déjà avec les éléments sous-jacents et l'arrière-plan, sans effort supplémentaire. – andrewmu