ServerSocket'ın ImageIO.write (....) kullanarak bir görüntü akışı gönderebilmesi için bir ServerSocket ve bir Prizim kuruluyor ve Socket bunları okumak ve bir JFrame'i bunlarla güncellemeye çalışır. Bu yüzden ImageIO'nun bir resmin sonunu tespit edip edemeyeceğini merak ettim. (Kesinlikle JPEG formatını bilmiyorum, bu yüzden onu test ettim)ImageIO kullanarak bir görüntü akışı gönder?
Görünüşe göre, değil.
Sunucu tarafında, aralarında biraz uyku ile ImageIO.write (...) kullanarak resimleri sürekli olarak gönderdim. İstemci tarafında, ImageIO ilk görüntüyü okumadı, fakat bir sonraki sayfada boş döndü. Bu kafa karıştırıcı. İlk görüntüyü okumayı engellemeyi bekliyordum (çünkü bir sonraki görüntünün hala aynı resmin parçası olduğunu düşünüyor) ya da hepsini okumada başarılı (çünkü işe yarıyor). Ne oluyor? ImageIO, ilk görüntünün sonunu değil, ikinci görüntüyü algılar gibi görünüyor. (Bu arada, görüntüler birbiriyle kabaca birbirine benzemektedir.) Bu gibi görüntüleri akıtmanın kolay bir yolu var mı, yoksa baytları bir bayt veya bir dizi diziye ulaşana kadar bir arabelleğe geçiren kendi mekanizmamı yapmak zorunda mıyım? bayt, hangi noktada arabellekten görüntüyü okur?
yararlıdır benim sunucu kod parçasıdır:
while(true){
Socket sock=s.accept();
System.out.println("Connection");
OutputStream out=sock.getOutputStream();
while(!socket.isClosed()){
BufferedImage img=//get image
ImageIO.write(img, "jpg", out);
Thread.sleep(100);
}
System.out.println("Closed");
}
Müvekkilim kodu:
Socket s=new Socket(InetAddress.getByName("localhost"), 1998);
InputStream in=s.getInputStream();
while(!s.isClosed()){
BufferedImage img=ImageIO.read(in);
if(img==null)//this is what happens on the SECOND image
else // do something useful with the image
}
Daha da kötüsü: ImageIO.write biçimini png olarak ayarlıyorum ve işe yaradı (bir dereceye kadar. Alınan görüntülerin yarısı null) – DankMemes
Her şeyden önce arabellek sistemini uygulamak zorunda kalacağım gibi görünüyor. :( – DankMemes
* "ImageIO.write (....) kullanarak görüntü akışı ve Soket bunları okumak ve bir JFrame'i bunlarla güncellemeye çalışır." * Bu, web sohbeti veya ekran paylaşımı veya benzerleri içinse, not Video akışları ya da akıllıca en aza indirgenmiş görüntüler (örneğin, sadece bir değiştirilen alanın bir ekimine yönelik bir ekran) gerektirdiği gibi, tek tek görüntüler göndermek sonuçlanan videonun bir buzul gibi yayılmasına neden olacaktır (Küresel İklim Değişikliğini göz ardı ederek). –