ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಕ್ಯಾನ್ವಾಸ್ನಲ್ಲಿ ಮಾಸ್ಟರಿಂಗ್ ಮಾಸ್ಕ್ಡ್ ಇಮೇಜ್ ಬಾರ್ಡರ್ಗಳು
ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ದೃಶ್ಯ ಪರಿಣಾಮಗಳ ರಚನೆಯಲ್ಲಿ ಬಹು ಚಿತ್ರ ಸಮ್ಮಿಳನವು ಸಾಮಾನ್ಯ ಹಂತವಾಗಿದೆ. ಮುಖವಾಡದೊಂದಿಗೆ ಚಿತ್ರದ ವೀಕ್ಷಿಸಬಹುದಾದ ಪ್ರದೇಶಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವುದು ಆಗಾಗ್ಗೆ ತಂತ್ರವಾಗಿದೆ. ಅನನ್ಯ ರೂಪಗಳನ್ನು ರಚಿಸಲು ಇದು ಸಹಾಯಕವಾಗಿದ್ದರೂ, ಆ ಮುಖವಾಡದ ಆಕಾರಗಳ ಸುತ್ತಲೂ ಗಡಿಯನ್ನು ಸೇರಿಸಲು ಇದು ಸವಾಲಾಗಿರಬಹುದು. ಆದರೂ ದಿ ಕ್ಯಾನ್ವಾಸ್ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ನಲ್ಲಿನ ಅಂಶವು ವ್ಯಾಪಕವಾದ ಇಮೇಜ್ ಮ್ಯಾನಿಪ್ಯುಲೇಷನ್ ಅನ್ನು ನೀಡುತ್ತದೆ, ಮರೆಮಾಚಲಾದ ಚಿತ್ರದ ಸುತ್ತಲೂ ಗಡಿಯನ್ನು ಹೊಂದಿಸುವುದು ಸುಲಭವಲ್ಲ.
ಡೆವಲಪರ್ಗಳು ಮಾಸ್ಕ್ಗಳು ಮತ್ತು ಕ್ಲಿಪ್ ಚಿತ್ರಗಳನ್ನು ಕಾಲ್ಪನಿಕ ರೀತಿಯಲ್ಲಿ ಅನ್ವಯಿಸಬಹುದು ಕ್ಯಾನ್ವಾಸ್ API, ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ, ರಚಿಸಲಾದ ಯಾವುದೇ ಗಡಿಯು ಕ್ಯಾನ್ವಾಸ್ನ ಆಯತಾಕಾರದ ಆಕಾರಕ್ಕೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ. ಮುಖವಾಡದಿಂದ ವ್ಯಾಖ್ಯಾನಿಸಲಾದ ಸಂಕೀರ್ಣ ಆಕಾರದ ಅಂಚುಗಳಿಗೆ ಹೊಂದಿಕೆಯಾಗುವ ಗಡಿಯನ್ನು ರಚಿಸಲು ನೀವು ಬಯಸಿದಾಗ, ಇದು ಸಮಸ್ಯೆಯನ್ನು ಒದಗಿಸುತ್ತದೆ. ನೇರವಾದ ಆಯತಾಕಾರದ ಗಡಿಯನ್ನು ಮೀರಿ ಮುಖವಾಡದ ನಿಖರವಾದ ಪ್ರಯಾಣವನ್ನು ಅನುಸರಿಸುವುದು ಉದ್ದೇಶವಾಗಿದೆ.
ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ನಲ್ಲಿ ಇಮೇಜ್ ಮಾಸ್ಕ್ ಅನ್ನು ಹೇಗೆ ಅನ್ವಯಿಸಬೇಕು ಮತ್ತು ಹೆಚ್ಚು ಮುಖ್ಯವಾಗಿ, ಮುಖವಾಡದ ಚಿತ್ರದ ವಿಭಿನ್ನ ಆಕಾರವು ಗಡಿಯಿಂದ ಸುತ್ತುವರಿದಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳುವುದು ಹೇಗೆ ಎಂಬುದನ್ನು ಈ ಪೋಸ್ಟ್ ವಿವರಿಸುತ್ತದೆ. ಹೆಚ್ಚುವರಿಯಾಗಿ, ಮರೆಮಾಚುವಿಕೆಯನ್ನು ಪೂರ್ಣಗೊಳಿಸುವ ಆದರೆ ಇನ್ನೂ ವ್ಯಾಖ್ಯಾನಿಸಲಾದ ಗಡಿ ಪರಿಹಾರವನ್ನು ಹೊಂದಿಲ್ಲದ ಕಾರ್ಯವನ್ನು ನಾವು ಪರಿಶೀಲಿಸುತ್ತೇವೆ.
ಕ್ಯಾನ್ವಾಸ್ನಲ್ಲಿ ಸಂಯೋಜಿತ ಕಾರ್ಯಾಚರಣೆಗಳೊಂದಿಗೆ ಹೇಗೆ ಕೆಲಸ ಮಾಡಬೇಕೆಂದು ಕಲಿಯುವ ಮೂಲಕ ನೀವು ಗಡಿಯ ನೋಟವನ್ನು ಉತ್ತಮವಾಗಿ ಟ್ಯೂನ್ ಮಾಡಬಹುದು. ಪ್ರಾರಂಭಿಸೋಣ ಮತ್ತು ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ನ ಕ್ಯಾನ್ವಾಸ್ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಮುಖವಾಡದ ಚಿತ್ರದ ಸುತ್ತಲೂ ಅಗತ್ಯವಾದ ಗಡಿಯನ್ನು ಸೇರಿಸಲು ಹೇಗೆ ಬಳಸುವುದು ಎಂದು ನೋಡೋಣ.
ಆಜ್ಞೆ | ಬಳಕೆಯ ಉದಾಹರಣೆ |
---|---|
globalCompositeOperation | ಕ್ಯಾನ್ವಾಸ್ನಲ್ಲಿ ರೇಖಾಚಿತ್ರ ಕ್ರಿಯೆಗಳ ಸಂಯೋಜನೆಯನ್ನು ಈ ವೈಶಿಷ್ಟ್ಯದಿಂದ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ. ಗ್ಲೋಬಲ್ ಕಾಂಪೋಸಿಟ್ ಆಪರೇಷನ್ ='ಸೋರ್ಸ್-ಇನ್' ಉದಾಹರಣೆಯಲ್ಲಿ ಮುಖವಾಡದ ಚಿತ್ರವು ಮುಖ್ಯ ಚಿತ್ರವನ್ನು ಕ್ಲಿಪ್ ಮಾಡುತ್ತದೆ ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ ಇದರಿಂದ ಛೇದಿಸುವ ಪ್ರದೇಶಗಳನ್ನು ಮಾತ್ರ ನೋಡಲಾಗುತ್ತದೆ. |
toDataURL() | ಕ್ಯಾನ್ವಾಸ್ನ ಮಾಹಿತಿಯನ್ನು Base64 ನೊಂದಿಗೆ ಎನ್ಕೋಡ್ ಮಾಡಲಾದ ಚಿತ್ರವಾಗಿ ಪರಿವರ್ತಿಸುತ್ತದೆ. ಮುಖವಾಡ ಮತ್ತು ಗಡಿಯನ್ನು ಅನ್ವಯಿಸಿದ ನಂತರ ಮುಗಿದ ಚಿತ್ರವನ್ನು PNG ನಂತೆ ಬಳಸಿಕೊಳ್ಳಲು ಇದು ಸಾಧ್ಯವಾಗಿಸುತ್ತದೆ. ಉದಾಹರಣೆಯ ಇಮೇಜ್ ಔಟ್ಪುಟ್ ಅನ್ನು canvas.toDataURL('image/png') ಬಳಸಿಕೊಂಡು ಉತ್ಪಾದಿಸಲಾಗುತ್ತದೆ. |
crossOrigin | ಕ್ಯಾನ್ವಾಸ್ನಲ್ಲಿ ಬೇರೆ ಡೊಮೇನ್ನಿಂದ ಲೋಡ್ ಮಾಡಲಾದ ಚಿತ್ರಗಳ ಬಳಕೆಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುವ ಮೂಲಕ ಈ ವೈಶಿಷ್ಟ್ಯವು ಭದ್ರತಾ ನಿರ್ಬಂಧಗಳನ್ನು ಗೌರವಿಸುತ್ತದೆ. MaskImg.crossOrigin = 'ಅನಾಮಧೇಯ' CORS ಸಮಸ್ಯೆಗಳನ್ನು ಉಂಟುಮಾಡದೆಯೇ ಮುಖವಾಡದ ಚಿತ್ರಕ್ಕೆ ಪ್ರವೇಶವನ್ನು ಮಾಡಬಹುದು ಎಂದು ಖಾತರಿಪಡಿಸುತ್ತದೆ. |
beginPath() | ಕ್ಯಾನ್ವಾಸ್ನಲ್ಲಿ, ಈ ವಿಧಾನವನ್ನು ಬಳಸಿಕೊಂಡು ಹೊಸ ಮಾರ್ಗವನ್ನು ಪ್ರಾರಂಭಿಸಬಹುದು. ಎರಡನೇ ವಿಧಾನವು ctx.beginPath() ಅನ್ನು ಮಾಸ್ಕ್ ಮಾಡಲಾದ ಚಿತ್ರದ ಸುತ್ತಲೂ ಕಸ್ಟಮ್ ಗಡಿಯನ್ನು ಸೆಳೆಯುವುದರಿಂದ ಮಾರ್ಗವು ಮುಖವಾಡದ ಬಾಹ್ಯರೇಖೆಗೆ ಅಂಟಿಕೊಳ್ಳುತ್ತದೆ ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ. |
moveTo() | ಈ ಕಾರ್ಯವಿಧಾನದೊಂದಿಗೆ, ಯಾವುದೇ ರೇಖಾಚಿತ್ರಗಳನ್ನು ಮಾಡಲಾಗುವುದಿಲ್ಲ; ಬದಲಿಗೆ, "ಪೆನ್" ಅನ್ನು ಹೊಸ ಆರಂಭದ ಸ್ಥಳಕ್ಕೆ ಸರಿಸಲಾಗಿದೆ. ಗಡಿಯ ಆರಂಭದ ಬಿಂದುವನ್ನು ctx.moveTo(0, 0) ಬಳಸಿಕೊಂಡು ಉದಾಹರಣೆಯಲ್ಲಿ ಇರಿಸಲಾಗಿದೆ, ಇದು ಮುಖವಾಡದ ಗಡಿಗಳ ಸುತ್ತಲೂ ಗಡಿಯನ್ನು ನಿಖರವಾಗಿ ಸೆಳೆಯಲು ಅವಶ್ಯಕವಾಗಿದೆ. |
lineTo() | ಕೊಟ್ಟಿರುವ ನಿರ್ದೇಶಾಂಕಗಳನ್ನು ಆರಂಭಿಕ ಹಂತವಾಗಿ ಬಳಸಿ, ಈ ತಂತ್ರವು ಸರಳ ರೇಖೆಯನ್ನು ಸೆಳೆಯುತ್ತದೆ. ಮುಖವಾಡದ ಚಿತ್ರದ ಗಡಿಯನ್ನು ctx.lineTo(maskImg.width, 0) ಬಳಸಿ ದ್ರಾವಣದಲ್ಲಿ ಚಿತ್ರಿಸಿದ ರೇಖೆಗಳಿಂದ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ. |
stroke() | ಗೊತ್ತುಪಡಿಸಿದ ಹಾದಿಯಲ್ಲಿ, ಗಡಿಗಳು ಅಥವಾ ರೇಖೆಗಳನ್ನು ಸೆಳೆಯುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಮಾಸ್ಕ್ ಫಾರ್ಮ್ ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲು moveTo() ಮತ್ತು lineTo() ಅನ್ನು ಬಳಸಲಾಗುತ್ತದೆ, ಮತ್ತು ನಂತರ ctx.stroke() ಅನ್ನು ಮುಖವಾಡದ ಚಿತ್ರದ ಸುತ್ತಲೂ ಗಡಿಯನ್ನು ಅನ್ವಯಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ. |
lineWidth | ಕ್ಯಾನ್ವಾಸ್ನಲ್ಲಿ ರೇಖೆಗಳನ್ನು ಎಷ್ಟು ದಪ್ಪವಾಗಿ ಚಿತ್ರಿಸಲಾಗಿದೆ ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸುತ್ತದೆ. ctx.lineWidth = 5 ಅನ್ನು ಬಳಸಿಕೊಂಡು ಸ್ಕ್ರಿಪ್ಟ್ ಮುಖವಾಡದ ಆಕಾರದ ಸುತ್ತಲೂ 5-ಪಿಕ್ಸೆಲ್ ದಪ್ಪದ ಗಡಿಯನ್ನು ಸ್ಥಾಪಿಸುತ್ತದೆ. |
strokeStyle | ಗಡಿಯ ಬಣ್ಣ ಅಥವಾ ಶೈಲಿಯನ್ನು ಸೂಚಿಸುತ್ತದೆ. ಉದಾಹರಣೆಯಲ್ಲಿನ ಗಡಿಯ ಬಣ್ಣವನ್ನು ctx.strokeStyle ='red' ಬಳಸಿಕೊಂಡು ಕೆಂಪು ಬಣ್ಣಕ್ಕೆ ಹೊಂದಿಸಲಾಗಿದೆ. |
ಮುಖವಾಡದ ಚಿತ್ರಕ್ಕೆ ಬಾರ್ಡರ್ ಅನ್ನು ಹೇಗೆ ಅನ್ವಯಿಸಬೇಕು ಎಂಬುದನ್ನು ಗುರುತಿಸುವುದು
ಒದಗಿಸಲಾದ ಸ್ಕ್ರಿಪ್ಟ್ಗಳ ಉದ್ದೇಶವು ಒಂದು ಚಿತ್ರಕ್ಕೆ ಮತ್ತೊಂದು ಚಿತ್ರವನ್ನು ಮುಖವಾಡವಾಗಿ ಬಳಸುವುದು ಮತ್ತು ನಂತರ ಅದನ್ನು ಬಳಸುವುದು ಕ್ಯಾನ್ವಾಸ್ API ಮುಖವಾಡದ ಆಕಾರದ ಸುತ್ತಲೂ ಕಸ್ಟಮ್ ಗಡಿಯನ್ನು ಸೇರಿಸಲು. ಮುಖವಾಡ ಮತ್ತು ಮುಖ್ಯ ಚಿತ್ರಕ್ಕಾಗಿ ಕಾರ್ಯದ ಪ್ರಾರಂಭದಲ್ಲಿ ಎರಡು ಹೊಸ ಚಿತ್ರ ವಸ್ತುಗಳನ್ನು ರಚಿಸಲಾಗಿದೆ. ಬಾಹ್ಯ ಮೂಲಗಳಿಂದ ಫೋಟೋಗಳನ್ನು ಲೋಡ್ ಮಾಡುವಾಗ, CORS ನಿಂದಾಗಿ ಸಮಸ್ಯೆಗಳನ್ನು ತಡೆಗಟ್ಟಲು ಕ್ರಾಸ್-ಆರಿಜಿನ್ ಸೆಟ್ಟಿಂಗ್ ಅತ್ಯಗತ್ಯ. ಕ್ಯಾನ್ವಾಸ್ ರಚನೆಯಾಗುತ್ತದೆ ಮತ್ತು ಎರಡೂ ಚಿತ್ರಗಳನ್ನು ಲೋಡ್ ಮಾಡಿದ ನಂತರ ಮುಖವಾಡದ ಚಿತ್ರಕ್ಕೆ ಹೊಂದಿಸಲು ಅದರ ಪ್ರಮಾಣವನ್ನು ಸರಿಹೊಂದಿಸಲಾಗುತ್ತದೆ. ಇದು ಇಮೇಜ್ ಡ್ರಾಯಿಂಗ್ ಸಮಯದಲ್ಲಿ ಮರುಗಾತ್ರಗೊಳಿಸುವ ಸಮಸ್ಯೆಗಳನ್ನು ತಪ್ಪಿಸುತ್ತದೆ ಮತ್ತು ಸೂಕ್ತವಾದ ಪ್ರದೇಶದೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಕ್ಯಾನ್ವಾಸ್ ಅನ್ನು ತಯಾರಿಸಲಾಗುತ್ತದೆ ಎಂದು ಖಾತರಿಪಡಿಸುತ್ತದೆ.
ಸ್ಕ್ರಿಪ್ಟ್ ನಂತರ ಬಳಸುತ್ತದೆ ಚಿತ್ರ () ಮುಖವಾಡದ ಚಿತ್ರವನ್ನು ಕ್ಯಾನ್ವಾಸ್ಗೆ ಸೆಳೆಯುವ ಕಾರ್ಯ. ಹಾಗೆ ಮಾಡುವಾಗ, ಮುಖವಾಡವನ್ನು ಕ್ಯಾನ್ವಾಸ್ಗೆ ಅನ್ವಯಿಸಲಾಗುತ್ತದೆ, ಮರೆಮಾಚುವ ಕಾರ್ಯವಿಧಾನಕ್ಕೆ ಅಡಿಪಾಯದ ಪದರವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ಮುಖವಾಡವನ್ನು ಸರಿಯಾಗಿ ಅನ್ವಯಿಸಲು ಜಾಗತಿಕ ಸಂಯೋಜಿತ ಕಾರ್ಯಾಚರಣೆಯನ್ನು "ಮೂಲ-ಇನ್" ಗೆ ಹೊಂದಿಸಬೇಕು. ಮುಖವಾಡದ ಚಿತ್ರದೊಂದಿಗೆ ಹೊಂದಿಕೆಯಾಗುವ ಪ್ರಾಥಮಿಕ ಚಿತ್ರದ ಪ್ರದೇಶಗಳನ್ನು ಮಾತ್ರ ಉಳಿಸಿಕೊಳ್ಳಲು ಕ್ಯಾನ್ವಾಸ್ಗೆ ಸೂಚಿಸಲಾಗಿದೆ. ಮೂಲಭೂತವಾಗಿ, ಮುಖವಾಡವು ಮುಖ್ಯ ಚಿತ್ರವನ್ನು ಕ್ಲಿಪ್ ಮಾಡಿದ ಆಕಾರವನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ. ಈ ಕ್ಲಿಪ್ಪಿಂಗ್ ಪ್ರದೇಶದೊಳಗೆ ಮುಖ್ಯ ಚಿತ್ರವನ್ನು ಚಿತ್ರಿಸಿದಾಗ ಸಂಯೋಜಿತ ಕಾರ್ಯಾಚರಣೆಯನ್ನು "ಮೂಲ-ಓವರ್" ಗೆ ಮರುಹೊಂದಿಸಲಾಗುತ್ತದೆ, ಈ ಹಿಂದೆ ಕ್ಲಿಪ್ ಮಾಡಲಾದ ವಿಷಯದ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರದಂತೆ ಗಡಿ ಪೇಂಟಿಂಗ್ನಂತಹ ಹೆಚ್ಚುವರಿ ಕ್ರಿಯೆಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ.
ಮುಖವಾಡದ ಆಕಾರಕ್ಕೆ ಗಡಿಯನ್ನು ಅನ್ವಯಿಸುವುದು ಇದರ ಬಳಕೆಯನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ ಸ್ಟ್ರೋಕ್ () ತಂತ್ರ. ಕ್ಯಾನ್ವಾಸ್ನಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಮಾರ್ಗ ಅಥವಾ ರೂಪವನ್ನು ಈ ಆಜ್ಞೆಯಿಂದ ಸೂಚಿಸಲಾಗುತ್ತದೆ. ಎರಡನೆಯ ಪರಿಹಾರದಲ್ಲಿ, ಕ್ಯಾನ್ವಾಸ್ ಮಾರ್ಗವನ್ನು ಹಸ್ತಚಾಲಿತವಾಗಿ ಉತ್ಪಾದಿಸಲು ಮತ್ತು ಮುಖವಾಡದ ಗಡಿಗಳನ್ನು ಪತ್ತೆಹಚ್ಚಲು ಮೂವ್ಟೊ() ಮತ್ತು ಲೈನ್ಟೊ() ಅನ್ನು ಸಂಯೋಜಿಸಲಾಗುತ್ತದೆ. ಈ ತಂತ್ರಗಳ ಬಳಕೆಯೊಂದಿಗೆ, ನೀವು ಗಡಿಯ ಆಕಾರವನ್ನು ಹಸ್ತಚಾಲಿತವಾಗಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಬಹುದು ಮತ್ತು ಅದು ಆಯತಾಕಾರದ ಕ್ಯಾನ್ವಾಸ್ ಗಡಿಗಿಂತ ಹೆಚ್ಚಾಗಿ ಮುಖವಾಡದ ಆಕಾರಕ್ಕೆ ಬದ್ಧವಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ. ನೀವು ಗಡಿಯ ಗೋಚರಿಸುವಿಕೆಯ ಮೇಲೆ ಸಂಪೂರ್ಣ ನಿಯಂತ್ರಣವನ್ನು ಹೊಂದಿರುತ್ತೀರಿ ಏಕೆಂದರೆ ಸಾಲಿನ ಅಗಲ ಆಸ್ತಿಯು ಗಡಿಯ ದಪ್ಪವನ್ನು ಹೊಂದಿಸುತ್ತದೆ ಮತ್ತು ಸ್ಟ್ರೋಕ್ ಶೈಲಿ ಆಸ್ತಿ ಅದರ ಬಣ್ಣವನ್ನು ಹೊಂದಿಸುತ್ತದೆ.
ಕೊನೆಯದಾಗಿ, ಕ್ಯಾನ್ವಾಸ್ ಅನ್ನು Base64 ಸ್ಟ್ರಿಂಗ್ ಆಗಿ ಪರಿವರ್ತಿಸಲು toDataURL() ಕಾರ್ಯವನ್ನು ಬಳಸಲಾಗುತ್ತದೆ. ಇದನ್ನು ಮಾಡುವುದರ ಮೂಲಕ, ಮುಗಿದ ಚಿತ್ರ-ಮುಖವಾಡ ಮತ್ತು ಗಡಿಯನ್ನು ಸೇರಿಸಲಾಗುತ್ತದೆ-ಪ್ರೋಗ್ರಾಂನ ಇತರ ಪ್ರದೇಶಗಳಲ್ಲಿ ಸುಲಭವಾಗಿ ಬಳಸಿಕೊಳ್ಳುವ ಅಥವಾ ಸರ್ವರ್ಗೆ ಅಪ್ಲೋಡ್ ಮಾಡಲಾದ ಸ್ವರೂಪವಾಗಿ ರೂಪಾಂತರಗೊಳ್ಳುತ್ತದೆ. ಸಮಯದ ತಪ್ಪುಗಳನ್ನು ತಪ್ಪಿಸಲು, ಎರಡೂ ಚಿತ್ರಗಳನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಲೋಡ್ ಮಾಡಿದಾಗ ಮಾತ್ರ ಈ ಕಾರ್ಯಾಚರಣೆಯು ಕೊನೆಗೊಳ್ಳುತ್ತದೆ ಎಂದು ಭರವಸೆ ಖಚಿತಪಡಿಸುತ್ತದೆ. ಈ ಸ್ಕ್ರಿಪ್ಟ್ಗಳು ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ನ ಕ್ಯಾನ್ವಾಸ್ ಅಂಶದೊಂದಿಗೆ ನಿಖರವಾಗಿ ಮಾಸ್ಕ್ನ ಬಾಹ್ಯರೇಖೆಗಳಿಗೆ ಹೊಂದಿಕೆಯಾಗುವ ಡೈನಾಮಿಕ್ ಬಾರ್ಡರ್ ಅನ್ನು ಮರೆಮಾಚುವುದು ಮತ್ತು ಅನ್ವಯಿಸುವುದು ಸೇರಿದಂತೆ ಅತ್ಯಾಧುನಿಕ ಇಮೇಜ್ ಮಾರ್ಪಾಡು ತಂತ್ರಗಳನ್ನು ಹೇಗೆ ಸಾಧಿಸಬಹುದು ಎಂಬುದನ್ನು ತೋರಿಸುತ್ತದೆ.
ವಿಧಾನ 1: ಮುಖವಾಡದ ಚಿತ್ರಕ್ಕೆ ಕಸ್ಟಮ್ ಬಾರ್ಡರ್ ಅನ್ನು ಸೇರಿಸಲು ಕ್ಯಾನ್ವಾಸ್ ಮತ್ತು ಸ್ಟ್ರೋಕ್ ವಿಧಾನವನ್ನು ಬಳಸುವುದು
ಮುಖವಾಡದ ಚಿತ್ರದ ಸುತ್ತಲೂ ಗಡಿಯನ್ನು ನಿರ್ಮಿಸಲು, ಈ ವಿಧಾನವು JavaScript ಮತ್ತು Canvas API ಅನ್ನು ಬಳಸುತ್ತದೆ. ಮುಖವಾಡದ ಆಕಾರವನ್ನು ರೂಪಿಸಲು ಸ್ಟ್ರೋಕ್() ಅನ್ನು ಬಳಸಲಾಗುತ್ತದೆ.
function applyFiltersAndConvertToBase64(imageUrl, materialImage) {
return new Promise((resolve, reject) => {
const maskImg = new Image();
const mainImg = new Image();
maskImg.crossOrigin = "anonymous";
mainImg.crossOrigin = "anonymous";
let imagesLoaded = 0;
const onLoad = () => {
imagesLoaded++;
if (imagesLoaded === 2) {
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
canvas.width = maskImg.width;
canvas.height = maskImg.height;
ctx.drawImage(maskImg, 0, 0);
ctx.globalCompositeOperation = 'source-in';
ctx.drawImage(mainImg, 0, 0, maskImg.width, maskImg.height);
ctx.globalCompositeOperation = 'source-over';
ctx.lineWidth = 5; // Border thickness
ctx.strokeStyle = 'red'; // Border color
ctx.stroke(); // Draw border around mask
const base64Image = canvas.toDataURL('image/png');
resolve(base64Image);
}
};
maskImg.onload = onLoad;
mainImg.onload = onLoad;
maskImg.onerror = reject;
mainImg.onerror = reject;
maskImg.src = imageUrl;
mainImg.src = materialImage;
});
}
ಆಯ್ಕೆ 2: ಕ್ಯಾನ್ವಾಸ್ ಮಾರ್ಗವನ್ನು ಬಳಸಿಕೊಂಡು ಮುಖವಾಡದ ಆಕಾರದ ಸುತ್ತಲೂ ಕಸ್ಟಮ್ ಬಾರ್ಡರ್ ಅನ್ನು ರಚಿಸಿ
ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ನೊಂದಿಗೆ ಕ್ಯಾನ್ವಾಸ್ API ಅನ್ನು ಬಳಸಿಕೊಂಡು ಇಮೇಜ್ ಮಾಸ್ಕ್ ಮಾರ್ಗವನ್ನು ಅನುಸರಿಸುವ ಮೂಲಕ ಗಡಿಯು ಮುಖವಾಡದ ಆಕಾರವನ್ನು ನಿಕಟವಾಗಿ ಅನುಸರಿಸುತ್ತದೆ ಎಂದು ಈ ವಿಧಾನವು ಖಚಿತಪಡಿಸುತ್ತದೆ.
function applyFiltersAndConvertToBase64(imageUrl, materialImage) {
return new Promise((resolve, reject) => {
const maskImg = new Image();
const mainImg = new Image();
maskImg.crossOrigin = "anonymous";
mainImg.crossOrigin = "anonymous";
let imagesLoaded = 0;
const onLoad = () => {
imagesLoaded++;
if (imagesLoaded === 2) {
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
canvas.width = maskImg.width;
canvas.height = maskImg.height;
ctx.drawImage(maskImg, 0, 0);
ctx.globalCompositeOperation = 'source-in';
ctx.drawImage(mainImg, 0, 0, maskImg.width, maskImg.height);
ctx.globalCompositeOperation = 'source-over';
// Create path for the mask shape
ctx.beginPath();
ctx.moveTo(0, 0);
ctx.lineTo(maskImg.width, 0);
ctx.lineTo(maskImg.width, maskImg.height);
ctx.lineTo(0, maskImg.height);
ctx.closePath();
ctx.lineWidth = 5; // Border thickness
ctx.strokeStyle = 'blue'; // Border color
ctx.stroke(); // Apply the border along the path
const base64Image = canvas.toDataURL('image/png');
resolve(base64Image);
}
};
maskImg.onload = onLoad;
mainImg.onload = onLoad;
maskImg.onerror = reject;
mainImg.onerror = reject;
maskImg.src = imageUrl;
mainImg.src = materialImage;
});
}
ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ನಲ್ಲಿ ಕಸ್ಟಮ್ ಬಾರ್ಡರ್ಗಳೊಂದಿಗೆ ಮುಖವಾಡದ ಚಿತ್ರಗಳನ್ನು ವರ್ಧಿಸುವುದು
ನಿಮ್ಮ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಅಪ್ಲಿಕೇಶನ್ನ ಬಳಕೆದಾರರ ಅನುಭವವನ್ನು ಚಿತ್ರಗಳನ್ನು ಮರೆಮಾಚುವ ಮತ್ತು ವ್ಯವಹರಿಸುವಾಗ ಕಸ್ಟಮ್ ಗಡಿಗಳನ್ನು ಹೊಂದಿಸುವ ಸಾಮರ್ಥ್ಯದಿಂದ ಹೆಚ್ಚು ವರ್ಧಿಸಬಹುದು ಕ್ಯಾನ್ವಾಸ್ API. ಮರೆಮಾಚುವಿಕೆಯ ಸಹಾಯದಿಂದ, ಮುಖವಾಡ ಎಂದು ಕರೆಯಲ್ಪಡುವ ಮತ್ತೊಂದು ಚಿತ್ರವನ್ನು ಅವಲಂಬಿಸಿ ಚಿತ್ರದ ಯಾವ ಪ್ರದೇಶಗಳು ಗೋಚರಿಸುತ್ತವೆ ಎಂಬುದನ್ನು ನೀವು ನಿರ್ಧರಿಸಬಹುದು. ಮುಖವಾಡದ ವಲಯದ ಸುತ್ತಲೂ ಗಡಿಯನ್ನು ಸೇರಿಸುವುದು ಅನೇಕ ಡೆವಲಪರ್ಗಳು ಎದುರಿಸುವ ಸಮಸ್ಯೆಯಾಗಿದೆ, ವಿಶೇಷವಾಗಿ ಮುಖವಾಡವು ನೇರವಾದ ಆಯತಾಕಾರದ ಆಕಾರವಲ್ಲ. ಮಾಸ್ಕ್ನ ಔಟ್ಲೈನ್ಗೆ ನಿಖರವಾಗಿ ಹೊಂದಿಕೆಯಾಗುವ ಗಡಿಗಳನ್ನು ಹೊಂದಿರುವ ಯೋಜನೆಗಳು ಹೆಚ್ಚು ಹೊಳಪು ಮತ್ತು ಪರಿಣಿತರಾಗಿ ಗೋಚರಿಸುತ್ತವೆ.
ಕ್ಯಾನ್ವಾಸ್ API ಅನ್ನು ಬಳಸುವುದು ಈ ಸಮಸ್ಯೆಗೆ ಉಪಯುಕ್ತ ಪರಿಹಾರವಾಗಿದೆ ಮಾರ್ಗ2D ವಸ್ತು. ನಿಮ್ಮ ಮುಖವಾಡದ ಬಾಹ್ಯರೇಖೆಗಳಿಗೆ ಹೊಂದಿಕೊಳ್ಳುವ ಸಂಕೀರ್ಣ ಮಾರ್ಗಗಳನ್ನು ವಿನ್ಯಾಸಗೊಳಿಸಲು ನೀವು Path2D ಅನ್ನು ಬಳಸಬಹುದು ಮತ್ತು ನಂತರ ಅವುಗಳನ್ನು ಗಡಿಯೊಂದಿಗೆ ಸುತ್ತುವರಿಯಬಹುದು. ಸಾಂಪ್ರದಾಯಿಕ ಆಯತಗಳನ್ನು ಮೀರಿ ನಿಮ್ಮ ಕಸ್ಟಮ್ ಮಾಸ್ಕ್ನ ಮೂಲೆಗಳಿಗೆ ನಿಖರವಾಗಿ ಹೊಂದಿಕೆಯಾಗುವ ಗಡಿಗಳನ್ನು ರಚಿಸಲು ಈ ವಿಧಾನವು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಬಳಸುತ್ತಿದೆ moveTo() ಮತ್ತು lineTo() ಒಟ್ಟಾಗಿ ಮುಖವಾಡದ ಬಾಹ್ಯರೇಖೆಯನ್ನು ಪತ್ತೆಹಚ್ಚಲು ಸುಲಭಗೊಳಿಸುತ್ತದೆ ಮತ್ತು ನಿಖರವಾಗಿ ಜೋಡಿಸಲಾದ ಗಡಿಯನ್ನು ಖಾತರಿಪಡಿಸುತ್ತದೆ.
ಕಾರ್ಯಕ್ಷಮತೆಯು ಗಣನೆಗೆ ತೆಗೆದುಕೊಳ್ಳಬೇಕಾದ ಮತ್ತೊಂದು ಪ್ರಮುಖ ಅಂಶವಾಗಿದೆ, ವಿಶೇಷವಾಗಿ ದೊಡ್ಡ ಚಿತ್ರಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವಾಗ ಅಥವಾ ನೈಜ ಸಮಯದಲ್ಲಿ ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ಗಡಿಗಳನ್ನು ಅನ್ವಯಿಸುವಾಗ. ಮುಖವಾಡದ ಚಿತ್ರವನ್ನು ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳುವುದು, ಡ್ರಾಯಿಂಗ್ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಕಡಿತಗೊಳಿಸುವುದು ಮತ್ತು ಕ್ಯಾನ್ವಾಸ್ ರೆಂಡರಿಂಗ್ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಸುಗಮಗೊಳಿಸುವಂತಹ ತಂತ್ರಗಳನ್ನು ಬಳಸಿಕೊಳ್ಳುವ ಮೂಲಕ ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ನ ವೇಗವನ್ನು ಸುಧಾರಿಸಬಹುದು. ಸಂಕೀರ್ಣವಾದ ಅಥವಾ ಹೆಚ್ಚಿನ-ಕಾರ್ಯಕ್ಷಮತೆಯ ಸೆಟ್ಟಿಂಗ್ಗಳಲ್ಲಿಯೂ ಸಹ, ಅರ್ಥಹೀನ ಕ್ರಿಯೆಗಳನ್ನು ಕಡಿಮೆ ಮಾಡುವ ಮೂಲಕ ಮರೆಮಾಚುವಿಕೆ ಮತ್ತು ಗಡಿ-ರೇಖಾ ವಿಧಾನಗಳು ಸರಾಗವಾಗಿ ನಡೆಯುತ್ತವೆ ಎಂದು ನೀವು ಖಾತರಿಪಡಿಸಬಹುದು.
ಕ್ಯಾನ್ವಾಸ್ ಬಳಸಿ ಚಿತ್ರಗಳನ್ನು ಮರೆಮಾಚುವ ಮತ್ತು ಗಡಿಗೆ ಹಾಕುವ ಬಗ್ಗೆ ಪದೇ ಪದೇ ಕೇಳಲಾಗುವ ಪ್ರಶ್ನೆಗಳು
- JavaScript ನಲ್ಲಿ, ಒಂದನ್ನು ಮರೆಮಾಚಲು ನಾನು ಇನ್ನೊಂದು ಚಿತ್ರವನ್ನು ಹೇಗೆ ಬಳಸಬಹುದು?
- ಬಳಸುತ್ತಿದೆ 2 ಗೆ ಹೊಂದಿಸಲಾಗಿದೆ 'source-in', ಬಳಸಿ ಚಿತ್ರವನ್ನು ಮರೆಮಾಚಲು ಕ್ಯಾನ್ವಾಸ್ನಲ್ಲಿ ಮುಖವಾಡವನ್ನು ಎಳೆಯಿರಿ ಕ್ಯಾನ್ವಾಸ್ API. ಮುಖವಾಡವನ್ನು ಹೊಂದಿಸಲು, ಇದು ಪ್ರಾಥಮಿಕ ಚಿತ್ರವನ್ನು ಕ್ರಾಪ್ ಮಾಡುತ್ತದೆ.
- ಅದರ ಆಕಾರಕ್ಕೆ ಅನುಗುಣವಾಗಿ ಮುಖವಾಡದ ಚಿತ್ರಕ್ಕೆ ನಾನು ಗಡಿಯನ್ನು ಹೇಗೆ ರಚಿಸಬಹುದು?
- ಇದರೊಂದಿಗೆ ಮುಖವಾಡದ ಮಾರ್ಗವನ್ನು ಸ್ಥಾಪಿಸಿದ ನಂತರ moveTo() ಮತ್ತು lineTo(), ಬಳಸಿ stroke() ತಂತ್ರ. ವೈಯಕ್ತಿಕಗೊಳಿಸಿದ ಗಡಿಯೊಂದಿಗೆ ಮುಖವಾಡದ ಆಕಾರವನ್ನು ಸುತ್ತುವರಿಯಲು ಇದು ನಿಮ್ಮನ್ನು ಅನುಮತಿಸುತ್ತದೆ.
- ಇದರ ಉದ್ದೇಶವೇನು toDataURL() ಕ್ಯಾನ್ವಾಸ್ ಕುಶಲತೆಯಲ್ಲಿ?
- ಕ್ಯಾನ್ವಾಸ್ನ ವಿಷಯವು ಮೂಲಕ Base64-ಎನ್ಕೋಡ್ ಮಾಡಲಾದ ಚಿತ್ರವಾಗಿ ರೂಪಾಂತರಗೊಳ್ಳುತ್ತದೆ toDataURL() ಕಾರ್ಯ, PNG ಚಿತ್ರವಾಗಿ ಬಳಸಲು ಅಥವಾ ವಿತರಿಸಲು ಸರಳಗೊಳಿಸುತ್ತದೆ.
- ಕಾರ್ಯಕ್ಷಮತೆಗಾಗಿ ಕ್ಯಾನ್ವಾಸ್ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ನಾನು ಹೇಗೆ ಆಪ್ಟಿಮೈಜ್ ಮಾಡಬಹುದು?
- ಡ್ರಾಯಿಂಗ್ ಕಾರ್ಯಾಚರಣೆಗಳ ಪ್ರಮಾಣವನ್ನು ಕಡಿಮೆ ಮಾಡಿ ಮತ್ತು ಕ್ಯಾನ್ವಾಸ್ ವೇಗವನ್ನು ಹೆಚ್ಚಿಸಲು ಸಾಮಾನ್ಯವಾಗಿ ಬಳಸುವ ಅಂಶಗಳನ್ನು ಸಂಗ್ರಹಿಸುವ ಬಗ್ಗೆ ಯೋಚಿಸಿ. ಇದು ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ ಸರಾಗವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುವಂತೆ ಮಾಡುತ್ತದೆ ಮತ್ತು ಪುನಃ ಡ್ರಾಗಳ ಸಂಖ್ಯೆಯನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ.
- ನಾನು ಕ್ಯಾನ್ವಾಸ್ನಲ್ಲಿ ಅಡ್ಡ-ಮೂಲ ಚಿತ್ರಗಳನ್ನು ಲೋಡ್ ಮಾಡಬಹುದೇ?
- ಹೌದು, ಆದರೆ CORS ತೊಂದರೆಗಳನ್ನು ಉಂಟುಮಾಡದೆಯೇ ಚಿತ್ರವನ್ನು ಲಭ್ಯವಾಗುವಂತೆ ಮಾಡಲು, ನೀವು ಹೊಂದಿಸಬೇಕಾಗಿದೆ crossOrigin ಗೆ ಆಸ್ತಿ 'anonymous'.
ಮರೆಮಾಚುವಿಕೆ ಮತ್ತು ಗಡಿಗಳ ಕುರಿತು ಅಂತಿಮ ಆಲೋಚನೆಗಳು
ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಅಪ್ಲಿಕೇಶನ್ಗಳಲ್ಲಿ, ಚಿತ್ರಗಳನ್ನು ಮರೆಮಾಚುವುದು ಮತ್ತು ಕ್ಯಾನ್ವಾಸ್ನಲ್ಲಿ ಕಸ್ಟಮ್ ಅಂಚುಗಳನ್ನು ಅನ್ವಯಿಸುವುದು ಪಾಲಿಶ್ ಮಾಡಿದ ದೃಶ್ಯ ಅಂಶಗಳನ್ನು ರಚಿಸಲು ಪರಿಣಾಮಕಾರಿ ಮಾರ್ಗವಾಗಿದೆ. ಡೆವಲಪರ್ಗಳು ಚಿತ್ರಗಳ ರೆಂಡರಿಂಗ್ ಮತ್ತು ಸ್ಟೈಲಿಂಗ್ ಅನ್ನು ಬಳಸಿಕೊಳ್ಳುವ ಮೂಲಕ ಕುಶಲತೆಯಿಂದ ನಿರ್ವಹಿಸುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಹೊಂದಿದ್ದಾರೆ. ಕ್ಯಾನ್ವಾಸ್ API ಮತ್ತು ಅತ್ಯಾಧುನಿಕ ಡ್ರಾಯಿಂಗ್ ಆಜ್ಞೆಗಳು ಸ್ಟ್ರೋಕ್ () ಮತ್ತು ಮಾರ್ಗ ವ್ಯಾಖ್ಯಾನಗಳು.
ವಿಶೇಷವಾಗಿ ದೊಡ್ಡ ಫೋಟೋಗಳಿಗಾಗಿ ಗಡಿ ಮತ್ತು ಮರೆಮಾಚುವ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಎಚ್ಚರಿಕೆಯಿಂದ ಆಪ್ಟಿಮೈಜ್ ಮಾಡುವ ಮೂಲಕ ಸುಗಮ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಖಾತ್ರಿಪಡಿಸಲಾಗುತ್ತದೆ. ಈ ಟ್ಯುಟೋರಿಯಲ್ ಆಯತಾಕಾರದ ಚಿತ್ರಗಳ ಸುತ್ತ ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ಗಡಿಗಳನ್ನು ಚಿತ್ರಿಸಲು ಉಪಯುಕ್ತ ವಿಧಾನವನ್ನು ಒದಗಿಸುತ್ತದೆ, ಇದು ಕಲಾತ್ಮಕವಾಗಿ ಹಿತಕರವಾದ ಮತ್ತು ಸ್ಪಂದಿಸುವ ಆನ್ಲೈನ್ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸುವಾಗ ಉಪಯುಕ್ತವಾಗಿದೆ.
ಕ್ಯಾನ್ವಾಸ್ನಲ್ಲಿ ಮರೆಮಾಚುವಿಕೆ ಮತ್ತು ಗಡಿ ತಂತ್ರಗಳ ಉಲ್ಲೇಖಗಳು
- ಬಳಕೆಯ ಬಗ್ಗೆ ವಿವರವಾದ ಮಾರ್ಗದರ್ಶಿ ಕ್ಯಾನ್ವಾಸ್ API ಚಿತ್ರಗಳು ಮತ್ತು ಮುಖವಾಡಗಳನ್ನು ಕುಶಲತೆಯಿಂದ ನಿರ್ವಹಿಸಲು, ಡ್ರಾಯಿಂಗ್ ಕಾರ್ಯಾಚರಣೆಗಳು ಸೇರಿದಂತೆ 4 ಮತ್ತು 2: MDN ವೆಬ್ ಡಾಕ್ಸ್ .
- ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ನಲ್ಲಿ ಇಮೇಜ್ ಮಾಸ್ಕಿಂಗ್ ಮತ್ತು ಕ್ರಾಸ್-ಆರಿಜಿನ್ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಹೇಗೆ ನಿರ್ವಹಿಸುವುದು ಎಂಬುದರ ಸಮಗ್ರ ವಿವರಣೆ: HTML5 ಕ್ಯಾನ್ವಾಸ್ ಟ್ಯುಟೋರಿಯಲ್ಸ್ .
- ಕ್ಯಾನ್ವಾಸ್-ಆಧಾರಿತ ಅಪ್ಲಿಕೇಶನ್ಗಳಿಗಾಗಿ ಕಾರ್ಯಕ್ಷಮತೆ ಸಲಹೆಗಳು, ಇಮೇಜ್ ರೆಂಡರಿಂಗ್ ಮತ್ತು ಡ್ರಾಯಿಂಗ್ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಅತ್ಯುತ್ತಮವಾಗಿಸುವುದರ ಮೇಲೆ ಕೇಂದ್ರೀಕರಿಸುತ್ತವೆ: ಸ್ಮಾಶಿಂಗ್ ಮ್ಯಾಗಜೀನ್ .