CSS வண்ணப்பூச்சு API உடன் படைப்பாற்றலை கட்டவிழ்த்து விடுதல்: பணியிடங்களில் படங்களை கையாளுதல்
CSS பெயிண்ட் ஏபிஐ டெவலப்பர்களுக்கு மாறும் மற்றும் கலை பின்னணியை உருவாக்க அற்புதமான சாத்தியங்களைத் திறக்கிறது. 🎨 இருப்பினும், ஒரு வண்ணப்பூச்சு பணியாளருக்குள் படங்களுடன் பணிபுரிவது தனித்துவமான சவால்களை முன்வைக்கிறது. ஒரு முக்கிய சாலைத் தடைகளில் ஒன்று, CSS மாறிகள் வழியாக படங்களை கடந்து செல்வதற்கு குரோமியத்திற்கு நேரடி ஆதரவு இல்லை.
முன்னதாக, டெவலப்பர்கள் படங்களை அனுப்ப -வெப்கிட் -கன்வாஸைப் பயன்படுத்தலாம், ஆனால் இந்த அம்சம் நீக்கப்பட்டது. இதன் பொருள் CSS பண்புகளை நம்பாமல் படகில் படங்களை செலுத்துவதற்கான மாற்று வழிகளை நாம் ஆராய வேண்டும். உரை கிளிப்பிங் விளைவை அப்படியே வைத்திருக்கும்போது H1 குறிச்சொல்லுக்கு தனிப்பயன் பின்னணியைப் பயன்படுத்துவதே குறிக்கோள்.
சிலர் படங்களை கடக்க பின்னணி-படத்தைப் பயன்படுத்த முயற்சித்திருக்கிறார்கள், ஆனால் இது வண்ணப்பூச்சு (பணியாளர்) செயல்பாட்டுடன் இணைந்தால் மோதல்களை உருவாக்குகிறது. இதன் விளைவாக, ஒரு சாத்தியமான தீர்வைக் கண்டுபிடிப்பதில் படைப்பாற்றல் மற்றும் CSS வண்ணப்பூச்சு பணியிடங்கள் படங்களுடன் எவ்வாறு தொடர்பு கொள்கின்றன என்பதைப் பற்றிய ஆழமான புரிதல் தேவைப்படுகிறது.
படத்தை அடிப்படையாகக் கொண்ட அமைப்புடன் உங்கள் தலைப்பு "வர்ணம் பூசப்பட்ட" ஒரு அதிர்ச்சியூட்டும் உரை விளைவை உருவாக்க விரும்புவதை கற்பனை செய்து பாருங்கள். CSS பெயிண்ட் API உடன் இது சாத்தியமாகும், ஆனால் அதை அடைவதற்கான பாதை தந்திரமானது. இந்த கட்டுரையில், வரம்புகளைத் தவிர்ப்பதற்கும் படங்களை வெற்றிகரமாக ஒரு வண்ணப்பூச்சு பணியாளராக ஒருங்கிணைப்பதற்கும் பல்வேறு முறைகளை ஆராய்வோம். .
கட்டளை | பயன்பாட்டின் எடுத்துக்காட்டு |
---|---|
CSS.paintWorklet.addModule() | தனிப்பயன் CSS ஓவியம் அனுமதிக்கும் புதிய வண்ணப்பூச்சு பணியாளர் தொகுதியை பதிவு செய்கிறது. |
CSS.registerProperty() | வண்ணப்பூச்சு பணியாளருக்குள் பயன்படுத்தக்கூடிய புதிய CSS சொத்தை வரையறுக்கிறது. |
ctx.drawImage() | தனிப்பயன் கிராபிக்ஸ் வழங்குவதற்கு முக்கியமானது, ஒரு படத்தை கேன்வாஸில் ஈர்க்கிறது. |
canvas.toDataURL() | சேமிப்பு அல்லது பரிமாற்றத்திற்காக ஒரு கேன்வாஸ் படத்தை அடிப்படை 64-குறியிடப்பட்ட சரமாக மாற்றுகிறது. |
document.documentElement.style.setProperty() | தனிப்பயன் CSS சொத்தை ஜாவாஸ்கிரிப்ட் வழியாக மாறும் வகையில் அமைக்கிறது. |
const img = new Image() | டைனமிக் ஏற்றுதலுக்காக ஜாவாஸ்கிரிப்டில் ஒரு புதிய பட பொருளை உருவாக்குகிறது. |
img.onload | ஒரு படம் முழுமையாக ஏற்றப்பட்டவுடன் செயல்படுத்த ஒரு செயல்பாட்டை வரையறுக்கிறது. |
const express = require('express') | Node.js இல் HTTP கோரிக்கைகளை கையாளுவதற்கான எக்ஸ்பிரஸ் கட்டமைப்பை இறக்குமதி செய்கிறது. |
fs.readFile() | படங்களை மாறும் வகையில் ஏற்றுவதற்குப் பயன்படுத்தப்படும் கோப்பு முறைமையிலிருந்து ஒரு கோப்பைப் படிக்கிறது. |
res.end(data, 'binary') | ஃபிரான்டெண்டில் பயன்படுத்தப்பட வேண்டிய HTTP பதிலாக பைனரி படத் தரவை அனுப்புகிறது. |
CSS வண்ணப்பூச்சு பணியிடங்களில் மாஸ்டரிங் பட ஒருங்கிணைப்பு
முன்னர் வழங்கப்பட்ட ஸ்கிரிப்ட்கள் ஒரு பெரிய வரம்பைத் தீர்ப்பதை நோக்கமாகக் கொண்டுள்ளன CSS பெயிண்ட் API: படங்களை நேரடியாக ஒரு வண்ணப்பூச்சு பணியிடத்தில் அனுப்ப இயலாமை. ஜாவாஸ்கிரிப்ட் மற்றும் ஆஃப்ஸ்கிரீன் கேன்வாஸ்கள் மற்றும் பின்தளத்தில் பட செயலாக்கம் போன்ற பணிகளை மேம்படுத்துவதன் மூலம், பராமரிக்கும் போது படங்களை மாறும் வகையில் செருகலாம் பின்னணி-கிளிப்: உரை விளைவுகள். முதல் தீர்வு ஒரு ஆஃப்ஸ்கிரீன் கேன்வாஸைப் பயன்படுத்துவதை உள்ளடக்கியது, இது ஜாவாஸ்கிரிப்டில் படங்களை ஏற்றவும் அவற்றை வண்ணப்பூச்சு பணியாளருக்கு மாற்றவும் அனுமதிக்கிறது. இந்த முறை பயனுள்ளதாக இருக்கும், ஏனெனில் இது நீக்கப்பட்ட நுட்பங்களை நம்பாமல் படங்கள் சரியாக வரையப்படுவதை உறுதி செய்கிறது. .
இந்த தீர்வின் முக்கியமான கூறுகளில் ஒன்று Css.paintworklet.addmodule () செயல்பாடு, இது ரெண்டரிங் செய்வதற்கான புதிய பணியாளர்களை பதிவு செய்கிறது. பதிவுசெய்ததும், பணிகள் போன்ற முன் வரையறுக்கப்பட்ட CSS பண்புகளை அணுகலாம் -image-url, ஜாவாஸ்கிரிப்டைப் பயன்படுத்தி அவற்றை மாறும் வகையில் கையாள. பணியாளருக்குள் உள்ள வண்ணப்பூச்சு செயல்பாடு படத்தை வரைவதை கவனித்துக்கொள்கிறது, நாங்கள் பயன்படுத்துகிறோம் ctx.drawimage () குறிப்பிட்ட வடிவவியலுக்குள் அதை வழங்க கட்டளை. இந்த நுட்பம் மற்ற பாணிகளில் தலையிடாமல் பின்னணியை மாறும் வகையில் புதுப்பிப்பதில் நெகிழ்வுத்தன்மையை உறுதி செய்கிறது.
இரண்டாவது அணுகுமுறை ஜாவாஸ்கிரிப்டைப் பயன்படுத்தி படத்தை முன்பே ஏற்றுவதன் மூலம் வேறு வழியை எடுக்கும் மற்றும் அதை a ஆக மாற்றுகிறது அடிப்படை 64 உடன் குறியிடப்பட்ட சரம் canvas.todataurl (). இது படத் தரவை CSS சொத்தாக எளிதாக சேமித்து மாற்ற அனுமதிக்கிறது. இந்த முறையின் முதன்மை நன்மை என்னவென்றால், இது பணியாளருக்குள் நேரடி பட URL பெறுவதைத் தவிர்க்கிறது, இது சொந்தமாக ஆதரிக்கப்படவில்லை. இந்த அணுகுமுறையின் நிஜ-உலக பயன்பாட்டு வழக்கு உரை பின்னணிக்கான தனிப்பயன் படங்களை மாறும் வகையில் பதிவேற்ற பயனர்களை அனுமதிக்கும் வலைத்தளமாக இருக்கும். .
மூன்றாவது தீர்வு ஒரு பின்தளத்தில் சேவையகத்தைப் பயன்படுத்துவதன் மூலம் முன்பக்க நுட்பங்களுக்கு அப்பாற்பட்டது Node.js பட செயலாக்கத்தைக் கையாள. எக்ஸ்பிரஸ் கட்டமைப்பானது ஒரு இறுதிப்புள்ளி வழியாக படங்களை வழங்குகிறது, இதனால் அவற்றை ஃபிரான்டென்ட் ஸ்கிரிப்ட்களுக்கு அணுக முடியும். பயன்படுத்துகிறது fs.readfile (), படம் ஏற்றப்பட்டு பைனரி பதிலாக அனுப்பப்படுகிறது, உலாவிகளில் வேகமாக ரெண்டரிங் மற்றும் சிறந்த பொருந்தக்கூடிய தன்மையை உறுதி செய்கிறது. பாதுகாப்பான சேவையகம் வழியாக வெளிப்புற படங்களை மாறும் வகையில் ஏற்றுவது அவசியம் என்று உயர் செயல்திறன் கொண்ட வலை பயன்பாடுகளுக்கு இது மிகவும் பயனுள்ளதாக இருக்கும். இந்த மூன்று முறைகளையும் ஒருங்கிணைப்பதன் மூலம், டெவலப்பர்கள் மாறும் உரை பின்னணிக்கு மிகவும் நெகிழ்வான, செயல்திறன்-உகந்த தீர்வுகளை உருவாக்க முடியும்.
CSS பெயிண்ட் API இல் டைனமிக் பின்னணிகளுக்கான படைப்பு தீர்வுகள்
CSS பெயிண்ட் API மாறும் மற்றும் தனிப்பயனாக்கக்கூடிய பின்னணியை உருவாக்க ஒரு சக்திவாய்ந்த வழியை வழங்குகிறது. இருப்பினும், படங்களை நேரடியாக ஒரு வண்ணப்பூச்சு பணிக்குள் அனுப்புவது சவால்களை முன்வைக்கிறது, குறிப்பாக -வெப்கிட் -கன்வாஸ் நீக்கப்பட்டதிலிருந்து. .
டெவலப்பர்கள் எதிர்கொள்ளும் ஒரு பொதுவான பிரச்சினை பின்னணி-கிளிப்பை வைத்திருக்கும்போது படங்களை மாறும் வகையில் பயன்படுத்துகிறது: உரை விளைவு அப்படியே. படத் தரவை அனுப்ப CSS.RegisterProperty ஐப் பயன்படுத்துவதற்கு குரோமியத்திற்கு தற்போது ஆதரவு இல்லை, பாரம்பரிய முறைகள் பயனற்றவை.
ஒரு பணித்தொகுப்பு பின்னணி-பட பண்புகளை மேம்படுத்துவதை உள்ளடக்கியது, ஆனால் இந்த அணுகுமுறை வண்ணப்பூச்சுடன் (பணியாளர்) முரண்படக்கூடும். இதை சமாளிக்க, ஜாவாஸ்கிரிப்ட் மற்றும் உகந்த ரெண்டரிங் நுட்பங்களைப் பயன்படுத்தி மாற்று தீர்வுகளை ஆராய்வோம். .
இந்த கட்டுரை நேரடி பட இறக்குமதி, ஆஃப்ஸ்கிரீன் கேன்வாஸ்கள் மற்றும் மேம்பட்ட ரெண்டரிங் உத்திகள் உள்ளிட்ட பல அணுகுமுறைகளை முன்வைக்கிறது. ஒவ்வொரு தீர்வும் சிறந்த நடைமுறைகளுடன் கட்டமைக்கப்பட்டுள்ளது, அதிக செயல்திறன் மற்றும் குறுக்கு உலாவி பொருந்தக்கூடிய தன்மையை உறுதி செய்கிறது.
ஒரு வண்ணப்பூச்சு பணியிடத்தில் படங்களை வழங்க ஆஃப்ஸ்கிரீன் கேன்வாஸைப் பயன்படுத்துதல்
ஜாவாஸ்கிரிப்ட் ஃபிரான்டென்ட் செயல்படுத்தல்
if ('paintWorklet' in CSS) {
CSS.paintWorklet.addModule('my-paint-worklet.js');
}
document.documentElement.style.setProperty('--image-url', 'url(my-image.jpg)');
class MyWorklet {
static get inputProperties() { return ['--image-url']; }
paint(ctx, geom, properties) {
const img = new Image();
img.src = properties.get('--image-url').toString();
img.onload = () => ctx.drawImage(img, 0, 0, geom.width, geom.height);
}
}
registerPaint('myworklet', MyWorklet);
ஜாவாஸ்கிரிப்ட் வழியாக படங்களைப் பெறுதல் மற்றும் பணியிடத்திற்கு மாற்றுதல்
மேம்பட்ட ஜாவாஸ்கிரிப்ட் முறை
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
const img = new Image();
img.src = 'my-image.jpg';
img.onload = function() {
canvas.width = img.width;
canvas.height = img.height;
ctx.drawImage(img, 0, 0);
document.documentElement.style.setProperty('--image-data', canvas.toDataURL());
};
CSS.paintWorklet.addModule('image-paint-worklet.js');
சேவையக பக்க படம் பணியமர்த்தல் பொருந்தக்கூடிய தன்மைக்கு முன் செயலாக்கம்
Node.js பின்தளத்தில் செயல்படுத்தல்
const express = require('express');
const app = express();
const fs = require('fs');
app.get('/image', (req, res) => {
fs.readFile('my-image.jpg', (err, data) => {
if (err) res.status(500).send('Error loading image');
else res.end(data, 'binary');
});
});
app.listen(3000, () => console.log('Server running on port 3000'));
CSS பெயிண்ட் பணியிடங்களில் பட கையாளுதலுக்கான மேம்பட்ட நுட்பங்கள்
ஒரு கவனிக்கப்படாத அம்சம் CSS பெயிண்ட் API மேலும் மேம்பட்ட விளைவுகளை அடைய மற்ற உலாவி API களுடன் இதை எவ்வாறு இணைக்க முடியும். நேரடி படத்தை கடந்து செல்லும் நுட்பங்களை நாங்கள் ஆராய்ந்தாலும், மற்றொரு அணுகுமுறை ஆஃப்ஸ்கிரென்கான்வாஸ் ஏபிஐ. இது ஒரு தொழிலாளி நூலில் படங்களை செயலாக்க அனுமதிக்கிறது, இது பிரதான நூலில் செயல்திறன் சிக்கல்களைத் தடுக்கிறது. ஆஃப்ஸ்கிரீன் கேன்வாஸில் படங்களை வரைந்து அவற்றை பிட்மாப்களாக மாற்றுவதன் மூலம், டெவலப்பர்கள் சிக்கலான அனிமேஷன்கள் மற்றும் டைனமிக் யுஐ கூறுகளுக்கான ரெண்டரிங் மேம்படுத்தலாம்.
மற்றொரு சுவாரஸ்யமான முறை பயன்படுத்துவதை உள்ளடக்குகிறது Webgl ஒரு பணியாளருக்குள். அதிகாரப்பூர்வமாக ஆதரிக்கப்படவில்லை என்றாலும், படைப்பு டெவலப்பர்கள் ஒரு மறைக்கப்பட்ட வழியாக பட அமைப்புகளை கடந்து செல்வதில் பரிசோதனை செய்துள்ளனர் WebGLRenderer பிரதான நூலில் மற்றும் வண்ணப்பூச்சு பணியாளருக்கு பிக்சல் தரவை அனுப்புகிறது. 3D விளைவுகள் அல்லது உயர் செயல்திறன் கொண்ட கிராபிக்ஸ் உடன் பணிபுரியும் போது இந்த நுட்பம் பயனுள்ளதாக இருக்கும், அங்கு ரெண்டரிங் தரம் முக்கியமானது. இருப்பினும், உலாவி ஆதரவு குறைவாகவே உள்ளது, மேலும் குறைவடையும் தீர்வுகள் தேவை.
இறுதியாக, பட சொத்துக்களை ஒரு வழியாக ஒருங்கிணைத்தல் Service Worker கேச்சிங் மற்றும் ஏற்றுதல் செயல்திறனை மேம்படுத்தலாம். ஒவ்வொரு முறையும் ஒரு வண்ணப்பூச்சு பணியாளர் செயல்படுத்தப்படும் போது படங்களை எடுப்பதற்கு பதிலாக, ஒரு சேவை பணியாளர் படங்களை தற்காலிகமாக சேமித்து உடனடியாக பரிமாறலாம். இந்த அணுகுமுறை நேரடி வால்பேப்பர்கள் அல்லது தனிப்பயன் பாணியிலான உள்ளடக்க ஜெனரேட்டர்கள் போன்ற பின்னணி அமைப்புகளை அடிக்கடி புதுப்பிக்கும் பயன்பாடுகளுக்கு பயனளிக்கிறது. இந்த முறைகளை இணைப்பதன் மூலம், டெவலப்பர்கள் எளிய CSS விளைவுகளுக்கு அப்பாற்பட்ட உயர் செயல்திறன், பார்வை நிறைந்த வலை அனுபவங்களை உருவாக்க முடியும். .
CSS வண்ணப்பூச்சு பணியிடங்கள் மற்றும் பட கையாளுதல் பற்றி அடிக்கடி கேட்கப்படும் கேள்விகள்
- ஆதரிக்கப்படாத உலாவிகளில் CSS பெயிண்ட் API ஐ எவ்வாறு செயல்படுத்துவது?
- தற்போது, CSS.paintWorklet.addModule() Chrome மற்றும் Edge போன்ற நவீன உலாவிகளில் மட்டுமே ஆதரிக்கப்படுகிறது. ஆதரிக்கப்படாத உலாவிகளுக்கு, பயன்படுத்துவதைக் கவனியுங்கள் canvas ஒரு குறைவடையும்.
- ஒற்றை வண்ணப்பூச்சு பணியாளருக்கு பல படங்களை அனுப்ப முடியுமா?
- இல்லை, CSS.registerProperty() பல படங்களை சொந்தமாக ஆதரிக்கவில்லை. அதற்கு பதிலாக, படங்களை ஒற்றை கேன்வாஸில் ஒன்றிணைத்து ஒற்றை மூலமாக அனுப்ப ஜாவாஸ்கிரிப்டைப் பயன்படுத்தலாம்.
- ஒரு CSS வண்ணப்பூச்சு பணியாளர்களை உயிரூட்ட முடியுமா?
- ஆம்! நீங்கள் பயன்படுத்தலாம் CSS variables டைனமிக் உள்ளீடுகள் மற்றும் தூண்டுதல் மீண்டும் பூசங்கள் CSS.animation அல்லது JavaScript event listeners.
- படங்களுடன் வண்ணப்பூச்சு பணியிடங்களின் செயல்திறனை எவ்வாறு மேம்படுத்துவது?
- பயன்படுத்தவும் OffscreenCanvas பட செயலாக்கத்தை ஒரு தனி நூலில் செய்ய, பிரதான-நூல் பின்னடைவைக் குறைத்தல் மற்றும் ரெண்டரிங் வேகத்தை மேம்படுத்துதல்.
- வெளிப்புற API இலிருந்து படங்களை ஒரு வண்ணப்பூச்சு பணியாளராக ஏற்ற முடியுமா?
- நேரடியாக இல்லை. நீங்கள் ஜாவாஸ்கிரிப்ட் வழியாக படத்தைப் பெற வேண்டும், அதை a ஆக மாற்ற வேண்டும் base64 சரம், மற்றும் அதை ஒரு CSS சொத்தாக அனுப்பவும்.
CSS பட ஒழுங்கமைப்பில் புதிய சாத்தியங்களைத் திறத்தல்
படங்களை அனுப்புவதற்கான சவால் a CSS வண்ணப்பூச்சு பணியாளர் வலை தொழில்நுட்பங்களின் வளர்ந்து வரும் தன்மையை எடுத்துக்காட்டுகிறது. சொந்த ஆதரவு குறைவாகவே இருக்கும்போது, ஜாவாஸ்கிரிப்ட் அடிப்படையிலான பட குறியாக்கம், பின்தளத்தில் செயலாக்கம் மற்றும் ஆஃப்ஸ்கிரீன் ரெண்டரிங் போன்ற மாற்றுத் தீர்வுகள் டெவலப்பர்களுக்கு பயனுள்ள பணித்தொகுப்புகளை வழங்குகின்றன. உலாவி வரம்புகள் இருந்தபோதிலும் மாறும் பின்னணிகள் மற்றும் சிக்கலான காட்சி விளைவுகளை இன்னும் அடைய முடியும் என்பதை இந்த முறைகள் உறுதி செய்கின்றன.
இணைப்பதன் மூலம் நவீன API கள் உகந்த செயல்திறன் நுட்பங்களுடன், டெவலப்பர்கள் வலை வடிவமைப்பின் எல்லைகளைத் தள்ளலாம். இது ஊடாடும் உரை விளைவுகள், பதிலளிக்கக்கூடிய பின்னணிகள் அல்லது புதுமையான UI கூறுகளை உருவாக்குகிறதா, இந்த அணுகுமுறைகளை மாஸ்டரிங் செய்வது காட்சி ரெண்டரிங் மீது சிறந்த கட்டுப்பாட்டை செயல்படுத்துகிறது. உலாவி ஆதரவு மேம்படுகையில், எதிர்கால புதுப்பிப்புகள் செயல்முறையை எளிதாக்கும், மேலும் வண்ணப்பூச்சு பணியிடங்களில் டைனமிக் பட கையாளுதலை மேலும் அணுகக்கூடியதாக மாற்றும். .
நம்பகமான ஆதாரங்கள் மற்றும் குறிப்புகள்
- அதிகாரப்பூர்வ CSS பெயிண்ட் ஏபிஐ ஆவணங்கள் பணியிடங்கள் எவ்வாறு செயல்படுகின்றன மற்றும் அவற்றின் திறன்களைப் பற்றிய நுண்ணறிவுகளை வழங்குகிறது. மேலும் வாசிக்க MDN வலை ஆவணங்கள் .
- படங்களை வண்ணப்பூச்சு பணியிடங்களில் அனுப்புவதற்கான வரம்புகள் குறித்து குரோமியத்தின் விவாதத்தை அவற்றின் வெளியீட்டு டிராக்கரில் காணலாம். விவரங்களை சரிபார்க்கவும் குரோமியம் வெளியீடு டிராக்கர் .
- ஆஃப்ஸ்கிரென்கான்வாஸில் ஒரு ஆழமான டைவ் மற்றும் செயல்திறனை வழங்குவதில் அதன் பங்கு கூகிளின் டெவலப்பர் குழுவால் ஆராயப்பட்டது. மேலும் அறிக கூகிள் டெவலப்பர்கள் .
- டைனமிக் பட ஏற்றுதலுக்கான ஜாவாஸ்கிரிப்ட் அடிப்படையிலான தீர்வுகள் உள்ளிட்ட மாற்று அணுகுமுறைகள் குறித்த பயிற்சிகள் கிடைக்கின்றன CSS-tricks .
- சமூகத்தால் இயக்கப்படும் தீர்வுகள் மற்றும் CSS வண்ணப்பூச்சு API வரம்புகளைச் சுற்றியுள்ள விவாதங்கள் ஆராயப்படலாம் அடுக்கு வழிதல் .