把图片压缩包下载成压缩包,再解压缩会有什么影响吗

java屏幕分享程序,把图片转成字节数组后压缩发送,在解压显示_java吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:295,402贴子:
java屏幕分享程序,把图片转成字节数组后压缩发送,在解压显示收藏
package Test4;import java.awt.Fimport java.awt.Iimport java.awt.event.WindowAimport java.awt.event.WindowEimport java.io.ByteArrayInputSimport java.io.DataInputSimport java.io.IOEimport java.net.Simport java.util.zip.ZipInputSimport javax.imageio.ImageIO;import javax.swing.ImageIimport javax.swing.JFimport javax.swing.JLpublic
class ReceiveImages extends
Thread{public BorderIpublic Sprivate static int SEND_IMAGE_SYMBOL=11;public String IP;public static void main(String[] args){new ReceiveImages(new BorderInit(), &127.0.0.1&).start();}public ReceiveImages(BorderInit frame,String IP){this.frame =this.IP=IP;}public void run() {while(frame.getFlag()){try {socket = new Socket(IP,8000);DataInputStream din = new DataInputStream(socket.getInputStream());int rec_symbol = din.read(); //获取图片标识符,开始接受图片字节数组System.out.println(&系统标识符是:&+rec_symbol);if(rec_symbol == SEND_IMAGE_SYMBOL){int imgSize = din.readInt();System.out.println(&总读取到的长度是:&+imgSize);byte[] buffer = new byte[imgSize];
//创建一个和图片大小一样的字节数组int length=0;while(length & imgSize){int readSize = din.read(buffer,length,imgSize-length); //从length开始读取imgSize-length大小的字节数组System.out.println(&现在读取的大小是:&+readSize);if(imgSize&length){length=length+readS}else{}}ByteArrayInputStream bis = new ByteArrayInputStream(buffer);ZipInputStream zis = new ZipInputStream(bis); zis.getNextEntry();Image img = ImageIO.read(zis); frame.jlbImg.setIcon(new ImageIcon(img));System.out.println(&连接第&+(System.currentTimeMillis()/+&秒&);frame.validate();}} catch (IOException e) {System.out.println(&连接断开&);}finally{try {socket.close();} catch (IOException e) {}}}}}//Client端窗口辅助类,专门用来显示从教师端收到的屏幕信息class BorderInit extends JFrame{private static final long serialVersionUID = 1L;public JLabel jlbIpublic boolean getFlag(){return this.}public BorderInit(){this.flag=this.jlbImg = new JLabel();this.setTitle(&远程监控--IP:&
+ &--主题:& );this.setSize(400, 400);//this.setUndecorated(true);
//全屏显示,测试时最好注释掉//this.setAlwaysOnTop(true);
//显示窗口始终在最前面this.add(jlbImg);this.setLocationRelativeTo(null);this.setExtendedState(Frame.MAXIMIZED_BOTH);this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);this.setVisible(true);this.validate();//窗口关闭事件this.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {flag=BorderInit.this.dispose();System.out.println(&窗体关闭&);System.gc();
//垃圾回收}});}}
import java.awt.Dimport java.awt.MouseIimport java.awt.Pimport java.awt.Rimport java.awt.Rimport java.awt.Timport java.awt.image.BufferedIimport java.io.ByteArrayOutputSimport java.io.DataOutputSimport java.io.Fimport java.io.IOEimport java.net.InetAimport java.net.ServerSimport java.net.Simport java.util.Dimport java.util.zip.Dimport java.util.zip.ZipEimport java.util.zip.ZipOutputSimport javax.imageio.ImageIO;/* * ly
* 该类实时发送截屏消失,多线程实现,不包含鼠标信息,且没有做对每个Client做 */publicclass MultiSendScreen{public static int SERVER_PORT=8000;private static int SEND_IMAGE_SYMBOL=11;private Rpublic
Dpublic Rpublic static void main(String args[]){new MultiSendScreen(SERVER_PORT);}//构造方法
开启套接字连接
机器人robot
获取屏幕大小public MultiSendScreen(int SERVER_PORT){try {ServerSocket serverSocket = new ServerSocket(SERVER_PORT);serverSocket.setSoTimeout();robot = new Robot();screen = Toolkit.getDefaultToolkit().getScreenSize();
//获取主屏幕的大小rect = new Rectangle(screen);int numClient = 1;while(true){Socket client = serverSocket.accept();System.out.println(&连接一个客户端并开启一个线程,编号为:&+numClient+&
时间是:&+ new Date()+&\n&);InetAddress inerAddress = client.getInetAddress();System.out.println(&客户&+numClient+&的IP主机地址是:&+inerAddress.getHostAddress()+&\n&);HandleAclient task = new HandleAclient(client);new Thread(task).start();numClient++;}} catch (Exception e) {e.printStackTrace();}
//构造屏幕大小的矩形}class HandleAclient implements Runnable{private Spublic HandleAclient(Socket client){this.client =}@Overridepublic void run() {//实时等待接收截屏消息while(true){try{BufferedImage img = robot.createScreenCapture(rect);
//屏幕截图BufferedImage cursor= ImageIO.read(new File(&img/cursor.png&));
//把鼠标加载到缓存中Point p= MouseInfo.getPointerInfo().getLocation();
//获取鼠标坐标img.createGraphics().drawImage(cursor, p.x, p.y, null);
//在图片画上鼠标 //把图片写到字节数组中ByteArrayOutputStream
byte_out = new ByteArrayOutputStream();
//创建字节流ImageIO.write(img,&jpg&, byte_out);
//使用ImageIO把图片写入字节流!!byte_out.flush();byte[] data = byte_out.toByteArray();
//字节流转换成字节数组//将生成的字节数组进行压缩ZipOutputStream zos = new ZipOutputStream(byte_out);zos.setLevel(Deflater.BEST_COMPRESSION);zos.putNextEntry(new ZipEntry(&ScreenCapture.jpg&));zos.write(data);zos.closeEntry();zos.close();//发送字节数组DataOutputStream dout = new DataOutputStream(client.getOutputStream());dout.write(SEND_IMAGE_SYMBOL);System.out.println(&写入标识符:&+SEND_IMAGE_SYMBOL);dout.writeInt(data.length);System.out.println(&写入图片长度:&+data.length);dout.write(data);dout.flush();//图片
数组字节流
压缩字节数组流
写出被压缩后的字节数组/*DataOutputStream dout = new DataOutputStream(client.getOutputStream());//把字节放到管道中输出dout.write(SEND_IMAGE_SYMBOL);System.out.println(&写入标识符:&+SEND_IMAGE_SYMBOL);dout.writeInt(data.length);System.out.println(&写入图片长度:&+data.length);dout.write(data);dout.flush();*/
} catch (IOException ioe) {
try {wait();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}
System.out.println(&连接断开&);
} finally {
if (client != null) {
client.close();
} catch (IOException e) {e.printStackTrace();}
就差一个小小的bug了,得闲的大神帮小弟看看Exception in thread &Thread-2& java.lang.NullPointerExceptionat javax.swing.ImageIcon.&init&(Unknown Source)at Test4.ReceiveImages.run(ReceiveImages.java:75)应该是在解压缩的时还原图片出问题了
每次都是诱惑我们前来送经验…^_^
第一次来java把提问,不过显然这种小问题直接被大跳过了,继续折腾吧。
”妈,我去写作业了。”“写写写!整天就知道写作业!贴吧签到签了吗?该回复的帖子回了吗?你说你啊,到现在一天水10点经验都水不了,还一心想着学习!看看隔壁家养的蓝蓝,人家都15级啦,全吧第一啊,你到现在才7级,我出去买个菜都不好意思抬头见人!赶紧把电脑打开,今天帖子多,给我水经验去!”于是我就来了
。。。。7级,有课帮忙看看bug
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或利用压缩包压缩照片后再解压照片大小会受影响吗_百度知道
利用压缩包压缩照片后再解压照片大小会受影响吗
压缩很多照片后压缩包的大小比照片小吗?
提问者采纳
看你压缩的比率是多大。存在比照片还小的可能。原照片一张5M,总大小100M,压缩比率大,就存在压缩包不到5M的可能。如果有怀疑,可以加压,看看是否压缩完整。
其他类似问题
为您推荐:
压缩包的相关知识
其他2条回答
理论上会,但是就一点点几乎不会影响
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁【pptx、docx文件如何方便地提取里面的图片?】①关闭PPT;②更改后缀名rar(变身);③解压,你会发现里面的图片全部弄出来了;④再把后缀名改回pptx(还原)。还有一个方法:①另存为html格式;②马上得到装有图片的文件夹。
同时转发到微博怎样在下载图片时把jpg格式的改成rar格式的 好像是能把图片改成压缩文件 解压出软件 有高手帮忙指引我一下_百度知道
怎样在下载图片时把jpg格式的改成rar格式的 好像是能把图片改成压缩文件 解压出软件 有高手帮忙指引我一下
提问者采纳
下载图片后,单击右键“添加至压缩文件”。。这样就能把图片改成压缩文件了。。这时会产生新的压缩文件。然后你在右键单击刚刚产生的新压缩文件,有个解压到当前文件夹。就把刚才的图解压出来了。
什么也没解压出来 还是那个图片 没解压出软件啊
你把软件压缩了。。解压时才会出现软件。。。、、ps:
你把什么给压缩,解压出来就是当时压缩的那个。。
好像是能把图片解压成软件
是这么说的“改 后缀.jpg为.rar。解压,得到keygen.exe”是用一个图片解压出一个序列号生成器,我能加你好友不?帮我弄弄,谢谢了
你QQ呢。。我加你吧。。
提问者评价
看到了么!再次感谢
其他类似问题
为您推荐:
您可能关注的推广
压缩文件的相关知识
其他2条回答
电脑上装个winrar软件,下好图片后右键打包就行了。
准备:1.一张图片 2.一个做试验的txt文件 3.WinRAR 步骤: 1:准备一张图片,比如 winshome.jpg。准备目标文件,比如test.txt。我们要实现把test.txt隐藏在图片里面。 2:把要隐藏的文件 test.txt 用 WinRAR 压缩。生成 test.rar 压缩包 3:打开命令行提示符:点击“开始→运行”,输入“cmd”。 4:我们假设中两个文件都存放在“ D:”下。输入命令:copy /b D:winshome.jpg + D:test.rar D:winshome.jpg 5:ok,试试打开生成的图片 winshome.jpg,没错吧,的的确确是原来的图片。 6:怎样打开那个 txt 文件?打开 WinRAR ,点击“文件→打开(快捷键 Ctrl + O )”,然后选择文件类型为“所有文件”,找到 winshome.jpg ,选择打开看看,是不是有个 txt 文件?这种方法适用于所有文件。
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 如何在百度云解压缩包 的文章

 

随机推荐