estoy usando context-blender para aplicar un efecto multiplican en los primeros 192 píxeles de la imagen de fondo html con un color fijo para lograr un efecto de transparencia en la cabecera de la página.imagen html5 cultivo
En el html tengo 2 lienzo. Uno para la parte de la imagen para aplicar el efecto multiplicar y otro para el color.
En el javascript, después de ajustar el color de la tela de color y el ancho de la tela, tanto a la window.innerWidth Me estoy poniendo la imagen de fondo:
imageObj.src = $('html').css('background-image').replace(/^url|[\(\)]/g, '');
Ahora viene el problema. Quiero dibujar una imagen recortada en la imagen en el lienzo de la imagen para poder aplicar el efecto de multiplicar. Estoy tratando de hacer lo siguiente:
imageObj.onload = function(){
// getting the background-image height
var imageHeight = window.innerWidth * imageObj.height/imageObj.width;
// get the corresponding pixels of the source image that correspond to the first 192 pixels of the background-image
var croppedHeight = 192 * imageObj.height/imageHeight;
// draw the image to the canvas
imageCanvas.drawImage(imageObj, 0, 0, imageObj.width, croppedHeight, 0, 0, window.innerWidth, 192);
// apply the multiply effect
colorCanvas.blendOnto(imageCanvas, 'multiply');
}
Pero yo estoy haciendo algo mal conseguir la altura recortada.
Ej: Para una imagen 1536x1152 y un contenedor de navegador 1293x679, el valor que estoy recibiendo de la fuente cosechado altura es de 230, pero al llegar la cosecha correcta necesito usar algo alrededor de 296.
Edición:
estoy usando fondo de tamaño: cubierta en el css para crear la imagen de fondo
Edit2:
Creé un fiddle para ilustrar el problema. Si se quite la línea //cHeight *= magicConstant;
la imagen recortada se ve mucho mejor, pero las cosas dejan de tener sentido. Eliminé el efecto de multiplicación en el violín, pero eso no es necesario para reproducir el problema. También noté que el comportamiento cambió si eliminé el segundo lienzo de la URL.
Por cierto, este comportamiento ocurrió con Google Chrome, pero creo que lo mismo sucede en Safari y Firefox.
¿Sería capaz de crear un ejemplo en jsfiddle.net? Podría ayudarnos a encontrar una respuesta para usted. Además, ¿el comportamiento (obteniendo 230px vs 296px) es consistente en múltiples navegadores? –
@MarcGagne Agregué el ejemplo a la pregunta – dcarneiro