मेरे पास एक सर्वर सॉकेट और सॉकेट सेट अप है, इसलिए ServerSocket ImageIO.write (....) का उपयोग करके छवियों की एक स्ट्रीम भेजता है और सॉकेट उन्हें पढ़ने और उनके साथ जेएफआरएएम अपडेट करने का प्रयास करता है। तो मुझे आश्चर्य हुआ कि क्या छविआई छवि के अंत का पता लगा सकता है। (मुझे जेपीईजी प्रारूप का बिल्कुल कोई ज्ञान नहीं है, इसलिए मैंने इसके बजाय परीक्षण किया)ImageIO का उपयोग कर छवियों की एक धारा भेजें?
जाहिर है, नहीं।
सर्वर की तरफ, मैंने छवियों को लिखने के साथ छवियों को लिखने के साथ लगातार छवियां भेजीं।()) लूप में कुछ नींद के साथ। क्लाइंट साइड पर, इमेजियो ने पहली छवि को कोई समस्या नहीं पढ़ी, लेकिन अगले पर यह शून्य हो गया। यह भ्रामक है। मैं उम्मीद कर रहा था कि यह पहली छवि को पढ़ने पर रोक देगा (क्योंकि ऐसा लगता है कि अगली छवि अभी भी एक ही छवि का हिस्सा है), या उन सभी को पढ़ने में सफल रही है (क्योंकि यह काम करती है)। क्या हो रहा है? ऐसा लगता है कि इमेजियो पहली छवि के अंत का पता लगाता है, लेकिन दूसरा नहीं। (वैसे, छवियां, मोटे तौर पर एक-दूसरे के समान होती हैं) क्या इस तरह की छवियों को स्ट्रीम करने का कोई आसान तरीका है या क्या मुझे अपना स्वयं का तंत्र बनाना है जो बाइट्स को बफर में पढ़ता है जब तक कि यह निर्दिष्ट बाइट या अनुक्रम तक नहीं पहुंच जाता बाइट्स, किस बिंदु पर यह बफर से छवि को पढ़ता है?
यह अपने सर्वर कोड की उपयोगी हिस्सा है:
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");
}
और मेरे मुवक्किल कोड:
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
}
यहां तक कि वीडर: मैंने ImageIO.write के लिए प्रारूप को पीएनजी पर सेट किया है, और यह काम करता है (अच्छी तरह से, कुछ हद तक। प्राप्त छवियों में से आधा शून्य था) – DankMemes
ऐसा लगता है कि मुझे बफरिंग सिस्टम को सभी के बाद लागू करना होगा। :( – DankMemes
* "ImageIO.write (....) का उपयोग कर छवियों की एक धारा और सॉकेट उन्हें पढ़ने और उनके साथ एक जेएफआरएएम अपडेट करने का प्रयास करता है।" * यदि यह वेब चैट या स्क्रीन-शेयरिंग या इसी तरह के नोट के लिए है, तो नोट कि इसमें वीडियो धाराओं या बुद्धिमानी से कम छवियों की आवश्यकता होती है (उदाहरण के लिए स्क्रीन-कास्ट के लिए केवल बदले गए क्षेत्र की फसल)। व्यक्तिगत छवियों को भेजना परिणामस्वरूप वीडियो को ग्लेशियर की तरह स्प्रिंट करना होगा (वैश्विक जलवायु परिवर्तन को अनदेखा करना)। –