Sunucudan nasıl görüntü alınabilir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Frontend'te sunucudan görüntü almanın birkaç temel yolu vardır:
-
<img>etiketi: En basit ve yaygın yöntemdir.srcözniteliği kullanılarak görüntü URL'si belirtilir.<img src="/images/logo.png" alt="Şirket logosu"> -
CSS özelliği
background-image: Bir öğenin arka planı olarak görüntü yerleştirmek için kullanılır..hero-section { background-image: url('/images/hero.jpg'); background-size: cover; } -
AJAX (XMLHttpRequest veya Fetch API): Görüntüleri asenkron olarak almak, genellikle içerik güncellemeleri veya görüntü verileriyle manipülasyon yapmak için kullanılır (örneğin, önizleme oluşturma veya istemci tarafı işleme). Alınan veriler çeşitli formatlarda olabilir (örneğin, Base64).
fetch('/api/image/123') .then(response => response.blob()) // Blob olarak veri al .then(blob => { const imageUrl = URL.createObjectURL(blob); // Blob için URL oluştur const img = document.createElement('img'); img.src = imageUrl; document.body.appendChild(img); }) .catch(error => console.error('Görüntü yüklenirken hata:', error));Base64 formatında görüntü alma:
fetch('/api/image/base64/123') .then(response => response.text()) // Metin (Base64 string) olarak veri al .then(base64String => { const img = document.createElement('img'); img.src = 'data:image/png;base64,' + base64String; // PNG örneği document.body.appendChild(img); }) .catch(error => console.error('Görüntü yüklenirken hata:', error)); -
WebSockets: Gerçek zamanlı görüntü almak için, örneğin akış uygulamaları veya oyunlar gibi. Görüntüler ikili veri olarak iletilebilir.
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>iledrawImage: Görüntüler AJAX veya<img>ile yüklenip, ardından<canvas>öğesine çizilebilir.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'; -
Akış (ReadableStream kullanarak): Büyük görüntüleri işlemek veya parça parça iletmek için.
fetch('/large-image-stream') .then(response => response.body) .then(reader => { // Görüntü veri akışını okuma ve işleme // Örneğin, TextDecoder kullanmak veya ArrayBuffer ile ikili verileri işlemek }) .catch(error => console.error('Akış hatası:', error));
Yöntem seçimi, belirli göreve, performans gereksinimlerine, asenkron yükleme ihtiyacına ve görüntü verisinin türüne bağlıdır.