Kuidas saab serverist pilti saada?
sobes.tech AI
Vastus AI-lt
On olemas mitu peamist viisi, kuidas saada pilte serverilt Frontendis:
-
<img>-tähis: Kõige lihtsam ja levinum viis. Kasutabsrcatribuuti, et näidata pildi URL-i.<img src="/images/logo.png" alt="Ettevõtte logo"> -
CSS omadus
background-image: Kasutatakse pildi asetamiseks elemendi taustaks..hero-section { background-image: url('/images/hero.jpg'); background-size: cover; } -
AJAX (XMLHttpRequest või Fetch API): Annab võimaluse saada pilte asünkroonselt, sageli sisu dünaamiliseks uuendamiseks või pildandmete töötlemiseks (näiteks eelvaate loomine või kliendi poolel töötlemine). Saadud andmed võivad olla erinevates formaatides (näiteks Base64).
fetch('/api/image/123') .then(response => response.blob()) // Saadab andmed Blobina .then(blob => { const imageUrl = URL.createObjectURL(blob); // Loob URL Blobist const img = document.createElement('img'); img.src = imageUrl; document.body.appendChild(img); }) .catch(error => console.error('Viga pildi laadimisel:', error));Pildi saamine base64 formaadis:
fetch('/api/image/base64/123') .then(response => response.text()) // Saadab andmed tekstina (Base64 string) .then(base64String => { const img = document.createElement('img'); img.src = 'data:image/png;base64,' + base64String; // Näiteks PNG document.body.appendChild(img); }) .catch(error => console.error('Viga pildi laadimisel:', error)); -
WebSockets: Piltide saamiseks reaalajas, näiteks voogedastusteenustes või mängudes. Pildid võivad edastada binaarandmetena.
const socket = new WebSocket('ws://localhost:8080'); socket.onmessage = (event) => { if (event.data instanceof Blob) { const img = document.createElement('img'); img.src = URL.createObjectURL(event.data); document.body.appendChild(img); } }; -
<canvas>koosdrawImage: Pildid võivad olla laetud AJAX-i või<img>kaudu ning seejärel joonistatud<canvas>-ile.const canvas = document.getElementById('myCanvas'); const ctx = canvas.getContext('2d'); const img = new Image(); img.onload = () => { ctx.drawImage(img, 0, 0); }; img.src = '/images/image_for_canvas.png'; -
Straming (kasutades
ReadableStream): Suurte piltide töötlemiseks või piltide osadeks saatmiseks.fetch('/large-image-stream') .then(response => response.body) .then(reader => { // Pildi andmete voogude lugemine ja töötlemine // Näiteks saab kasutada TextDecoder teksti töötlemiseks või ArrayBuffer binaarandmete töötlemiseks }) .catch(error => console.error('Viga voogedastuse ajal:', error));
Valik sõltub konkreetse ülesande, jõudluse nõuete, asünkroonse laadimise vajaduse ja pildiandmete tüübi järgi.