मैं पृष्ठ के शीर्ष पर पारदर्शी प्रभाव प्राप्त करने के लिए एक निश्चित रंग के साथ एचटीएमएल पृष्ठभूमि-छवि के पहले 1 9 2 पिक्सेल पर गुणा प्रभाव लागू करने के लिए context-blender का उपयोग कर रहा हूं।एचटीएमएल 5 छवि क्रॉपिंग
एचटीएमएल पर मेरे पास 2 कैनवास हैं। छवि के हिस्से के लिए गुणा प्रभाव लागू करने के लिए और रंग के लिए एक।
जावास्क्रिप्ट पर, window.innerWidth करने के लिए रंग-कैनवास के रंग और दोनों कैनवास की चौड़ाई सेट करने के बाद मैं के साथ पृष्ठभूमि छवि हो रही है:
imageObj.src = $('html').css('background-image').replace(/^url|[\(\)]/g, '');
अब समस्या आती है। मैं इमेज-कैनवास पर छवि में एक फसल वाली छवि खींचना चाहता हूं ताकि मैं गुणा प्रभाव लागू कर सकूं। मैं निम्नलिखित करने की कोशिश कर रहा हूं:
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');
}
लेकिन मैं फसल की ऊंचाई प्राप्त करने में कुछ गलत कर रहा हूं।
उदाहरण के लिए: एक 1536x1152 छवि और एक 1293x679 ब्राउज़र कंटेनर के लिए, मान मैं स्रोत के लिए हो रही है क्रॉप ऊंचाई 230 है, लेकिन सही फसल मैं कुछ संपादित चारों ओर 296
उपयोग करने की आवश्यकता पाने के लिए: सीएसएस पर कवर पृष्ठभूमि छवि
EDIT2 बनाने के लिए:
मैं उपयोग कर रहा हूँ पृष्ठभूमि आकार
मैंने समस्या का वर्णन करने के लिए fiddle बनाया है। यदि आप //cHeight *= magicConstant;
लाइन को असम्बद्ध करते हैं तो फसल की गई छवि बहुत अच्छी लगती है लेकिन चीजें समझने से रोकती हैं। मैंने फिडलर पर गुणा प्रभाव को हटा दिया लेकिन समस्या को पुन: पेश करने की आवश्यकता नहीं है। मैंने यह भी देखा कि अगर मैं यूआरएल से दूसरे कैनवास को हटा देता हूं तो व्यवहार बदल जाता है।
बीटीडब्ल्यू, यह व्यवहार Google क्रोम के साथ हुआ, लेकिन मुझे लगता है कि सफारी और फ़ायरफ़ॉक्स पर भी यही बात होती है।
क्या आप jsfiddle.net पर एक उदाहरण बनाने में सक्षम होंगे? शायद हम आपके लिए जवाब देने में मदद कर सकते हैं। यह भी व्यवहार है (230px बनाम 2 9 6 पीएक्स) कई ब्राउज़रों में संगत है? –
@MarcGagne मैंने प्रश्न – dcarneiro