=========做一个服务器和客户端,但是怎么传image呢?========= 今天做了一个简单的网络传输的练习,用的是套接字,目的是在客户端截屏,然后发到服务器去,在服务器上显示出来, 由于截屏得到的是BufferedImage,结果在传输的时候就出了问题,因为这个类没有被序列化,所以不能直接用对象来传输,请教下怎么传呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 bufferedimage实现了WritableRenderedImage应该可以用它来实现吧 楼上的大哥,怎样把image转换成2进制呢?然后再怎么读取呢?能给个简单的小例子吗?谢谢了 try {// 将 BufferedImage 转换成 2 进制输出流 ByteArrayOutputStream baos = new ByteArrayOutputStream(); writeJPEG(baos,bi1,quality,null); byte[] imageData = baos.toByteArray();// 再从 2 进制输入流中读取 BufferedImage ByteArrayInputStream bais = new ByteArrayInputStream(imageData); bi2 = ImageIO.read(bais); } catch (FileNotFoundException ex) { ex.printStackTrace(); } catch (IOException ex) { ex.printStackTrace(); } public static void writeJPEG(OutputStream out, BufferedImage image, int quality, IIOWriteProgressListener listener) throws IOException { ImageOutputStream ios = ImageIO.createImageOutputStream(out); Iterator it = ImageIO.getImageWritersBySuffix("jpg"); if (it.hasNext()) { ImageWriter iw = (ImageWriter) it.next(); ImageWriteParam iwp = iw.getDefaultWriteParam(); iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); iwp.setCompressionQuality((float) quality / 100f); iw.setOutput(ios); iw.addIIOWriteProgressListener(listener); iw.write(null, new IIOImage(image, null, null), iwp); iw.dispose(); out.flush(); out.close(); } } java游戏服务器 一个基础问题 StreamTokenizer 输入字符串问题 对于频繁查询数据库的一个方法,怎样提高程序执行效率? sqlserver 主键标识列为什么删除了删除前的行号还记着呢 java函数包从那里找到啊 新手问问 java中方法重写和方法隐藏到底是怎么区别 请问如何把Java程序转为Windows本地EXE程序? 那里有详细叙述怎么样对applet进行数字签名的文章? 谁用Java做过BS结构的打印程序 惊奇的J2SE发现 问个移位运算的问题
应该可以用它来实现吧
能给个简单的小例子吗?
谢谢了
// 将 BufferedImage 转换成 2 进制输出流
ByteArrayOutputStream baos = new ByteArrayOutputStream();
writeJPEG(baos,bi1,quality,null);
byte[] imageData = baos.toByteArray();// 再从 2 进制输入流中读取 BufferedImage
ByteArrayInputStream bais = new ByteArrayInputStream(imageData); bi2 = ImageIO.read(bais);
} catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
ImageOutputStream ios = ImageIO.createImageOutputStream(out);
Iterator it = ImageIO.getImageWritersBySuffix("jpg");
if (it.hasNext()) {
ImageWriter iw = (ImageWriter) it.next();
ImageWriteParam iwp = iw.getDefaultWriteParam();
iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
iwp.setCompressionQuality((float) quality / 100f);
iw.setOutput(ios);
iw.addIIOWriteProgressListener(listener);
iw.write(null, new IIOImage(image, null, null), iwp);
iw.dispose();
out.flush();
out.close();
}
}