精华内容
下载资源
问答
  • 使用LabVIEW编程,把网络分析仪仪器屏幕截屏保存到仪器,然后传输图片文件到电脑端。图片格式为BMP。
  • 我们知道,手机传输本文到电脑比较简单的方法是在电脑登录微信或者QQ,然后发过去就得了,但是有些人又很懒很懒,懒到连登录微信和QQ都不想登录,那么该怎么做呢? 我开发这款小工具其实就可以解决问题,但是目前只...
        

    我们知道,手机传输本文到电脑比较简单的方法是在电脑登录微信或者QQ,然后发过去就得了,但是有些人又很懒很懒,懒到连登录微信和QQ都不想登录,那么该怎么做呢?

    我开发这款小工具其实就可以解决问题,但是目前只支持传输文本,图片视频那些都还没开发。
    只需要在电脑打开接收文本的页面,也不用登录,然后手机扫码进入传输页面输入你想传输的文本,biu一下就实时传输过去了,不用刷新就可以立马看到传过来的文本。

    下面是传输页面。

    简洁哈哈

    clipboard.png

    下面是接收页面

    clipboard.png

    接收页面:点击进入

    其实开发很简单,就是用php+ajax

    1、先有表单页面,也就是上面的传输页面。我用了bootstrap框架做ui

    <!DOCTYPE html>
    <!DOCTYPE html>
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0" />
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <meta name="format-detection" content="telephone=no">
    
        <title>里客云在线文本传输</title>
        <link rel="stylesheet" href="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/css/bootstrap.min.css">  
        <script src="http://cdn.static.runoob.com/libs/jquery/2.1.1/jquery.min.js"></script>
        <script src="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    </head>
    <body>
    
    <form role="form" action="update.php" method="post">
        <div class="form-group" style="width: 90%;margin: 30px auto;">
            <label for="name">在线文本传输</label>
            <textarea class="form-control" rows="3" name="text" style="height: 200px;"></textarea>
            <button type="submit" class="btn btn-default" style="width: 100%;margin: 30px 0">传输</button>
        </div>
        <p style="text-align: center;color: #ccc;">里客云在线文本传输</p>
    </form>
    </body>
    </html>

    2、再有表单接收处理页面,update.php,这个页面是接受表单的文本,然后写入data.dat文件

    <?php
    header("Content-type:text/html;charset=utf-8");
    error_reporting(E_ALL^E_NOTICE^E_WARNING);
    $file_name = "data.dat";
    // 绝对路径: homedata.dat
    
    $file_pointer = fopen($file_name, "w");
    // "w"是一种模式
    
    fwrite($file_pointer, "$_POST[text]");
    // 不把文件剪切成0字节, 把数据追加到文件最后
    
    
    fclose($file_pointer);
    // 结束
    // 
    // 提交后回调
    echo "<script>alert('已传输~~'); history.go(-1);</script>";  
    ?>

    3、也就是说,你得新建一个空白文本,然后命名为data.dat
    还得要有一个chat.php用来解析data.dat里面的文本

    <?php   
    echo file_get_contents("data.dat");  
    ?>  

    4、最后,还得要有一个ajax.html用来显示接收到的文本,即上面的接收页面

    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="utf-8"> 
      <title>Bootstrap 实例 - 内联表单</title>
      <link rel="stylesheet" href="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/css/bootstrap.min.css">  
      <script src="http://cdn.static.runoob.com/libs/jquery/2.1.1/jquery.min.js"></script>
      <script src="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    </head>
    <body>
    <script type="text/javascript">  
    function loadXMLDoc()//ajax发送请求并显示  
    {  
    var xmlhttp;  
    if (window.XMLHttpRequest)  
      {// code for IE7+, Firefox, Chrome, Opera, Safari  
      xmlhttp=new XMLHttpRequest();  
      }  
    else  
      {// code for IE6, IE5  
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");  
      }  
    xmlhttp.onreadystatechange=function()  
      {  
      if (xmlhttp.readyState==4 && xmlhttp.status==200)  
        {  
        document.getElementById("myDiv").innerHTML=xmlhttp.responseText;  
        }  
      }  
    xmlhttp.open("POST","chat.php",true);  
    xmlhttp.send();  
    setTimeout("loadXMLDoc()",1000);//递归调用  
    }  
    loadXMLDoc();//先执行一次  
    </script>  
    </head>  
    <body>  
    
    <div class="panel panel-info" style="width: 90%; margin: 20px auto;">
      <div class="panel-heading">
        <h3 class="panel-title">接收到的内容</h3>
      </div>
      <div class="panel-body" id="myDiv">
        -暂无内容-
      </div>
    </div>
    
    <div class="panel panel-info" style="width: 90%; margin: 20px auto;">
      <div class="panel-heading">
        <h3 class="panel-title">微信扫描二维码传输文本</h3>
      </div>
      <div class="panel-body" id="myDiv">
        <img src="http://www.likeyunba.com/pan/res/1507403453.png" style="width: 200px;margin: 0 auto;" />
      </div>
    </div>
    
    </body>  
    </html>  

    就这么多了。

    扫码进入表单页面,然后提交表单,接收页面就会立马刷新,不用刷新浏览器就会显示!
    是不是发现、、省了很多事,不用登录微信QQ就可以在线传输文本。

    展开全文
  • 跟我提了一个客户在电脑上打开网页,这时其中七牛服务器会向阿里云服务器传输图片文件,网页再从阿里云加载这些图片文件。 我一个Unity程序员听到这些内心真的是崩溃得。请大神们指点我一下需要做一些什么。...
  • 视频图片传输

    2010-01-30 21:51:00
    有个朋友做桌面图片截屏的网络传输,碰到图片尺寸过大的问题。...机房30台机器,服务器把一幅图片分发下下面每一台机器,就要送几十兆的数据出去。确实太大了,肯定满足不了要求。 为了提高传输效率,有几个改进办法

    有个朋友做桌面图片截屏的网络传输,碰到图片尺寸过大的问题。也是,现在的显示器越来越大,分辨率越来越高,一个桌面图片都有几M。想时时传输,数据量确实大了点。碰巧一直想弄个视屏传输的教学软件。让学生可以看到我的电脑上的时时操作。如果每幅图片都好几M。机房30台机器,服务器把一幅图片分发到下下面每一台机器,就要送几十兆的数据出去。确实太大了,肯定满足不了要求。

        为了提高传输效率,有几个改进办法:

         1首先。将桌面的颜色从32位图改成16位图,为了简单起见,我也不想自己程序来完成32位图到16位图的转化,直接将显示器显示设置改成16位图吧。这样先减少一半的数据量先。当然如果不想修改系统显示设置,就自己程序转化吧。有代码可以参考的。

        2.采取差分法+压缩算法,,如果我们每次都将当前图片与上次的图片进行差分计算,或者再简单点,就2幅图像异或,,这样前后两幅图片相同的部分就能被xor成了0,应该说绝大多数情况下,前后2幅图片变化的差异并不多。变化部分xor后当然不为0咯。然后我们再将这个差分后的图片进行压缩。我们学过数据结构知道,这些压缩算法很多都是基于 Huffman 编码的,这样那些大部分为0的连续数据,就被”无情“的被压缩了。

        3.就是老掉牙的技术了,将send/recv改为sendto/recvfrom。。。一点有趣的新意都没,说都懒得说。

    展开全文
  • android tcp 传输图片

    2018-05-24 21:19:53
    图片信息通过电脑发送 这个APP 点击按钮 自动合成 图片 包含合成图片代码 等 全部代码
  • 电脑桌面的文件和文件夹传输给手机, adb push D:\D盘\桌面\短视频 /sdcard 在手机内部存储里面却找不文件夹 adb push D:\D盘\桌面\demo.txt /sdcard 手机里的文件倒是找到了,名称不对,应该是demo 变成了...
  • 先看看电脑上的效果,可以查看磁盘下的文件,可以用鼠标双击MP4,MP3文件会调用系统播放器进行播放,电脑与手机同局域网内无线互传jpg图片与MP4视频文件,其他文件此代码不支持。下面有安卓上的逻辑代码,不运行安卓...

    先看看电脑上的效果,可以查看磁盘下的文件,可以用鼠标双击MP4,MP3文件会调用系统播放器进行播放,电脑与手机同局域网内无线互传jpg图片与MP4视频文件,其他文件此代码不支持。下面有安卓上的逻辑代码,不运行安卓上的代码无法成功运行此程序。服务器套接字ServerSocket的使用,字符串的使用,数据类型转换,字符集,框架设计,io流灵活运用,安卓开发与电脑服务器通信等等,总之是许多简单基础构建而成,如果基础不夯实,保证像是再看天文,如果真找不到头绪,那就慢慢夯实基础吧,不要说JDK版本都升级到十几了,你还用JTM8,升级只是为了补全之前版本的不足,并不是废弃之前的东西,所以踏实从基础干起。
    在这里插入图片描述
    MainFrame主窗体类代码详细
    在这里插入图片描述
    GamePane类详细代码
    在这里插入图片描述

    MainFrame frame;//主窗体对象
     JList<String> jl ;
     JScrollPane js ;//滚动面板
     int wh = 500 ;//显示尺寸
     int hh = 500 ;
     JButton jb1;//刷新按钮
     JButton jb2;//返回
     JButton jb3;//前进
     JButton jb4;//发送/接收按钮
     String path = "D:\\";//文件路径
     JTextField jt1 ;//输入或显示当前选择文件
     JTextField jt2 ;//手机ip
     JTextArea jla ;//对话框提示显示
     ServerSocket ser;//服务器对象
     
     public GamePane(MainFrame frame) {
      this.frame = frame;
      setLayout(null);
      js = new JScrollPane((jl = new JList<String>()));
      jl.setFont(new Font("仿宋", Font.BOLD, 25));
      add(js);
      
      jt1 = new JTextField(path);
      add(jt1);
      
      jt2 = new JTextField("192.168.1.74:3838");
      add(jt2);
      
      jb1 = new JButton("刷新");
      add(jb1);
      jb1.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent e) {
        refresh_jl(new File(path)) ;
       }
      });
      
      jb2 = new JButton("返回");
      add(jb2);
      jb2.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent e) {
        try {
         refresh_jl(new File(new File(path).getParent())) ;
        } catch (Exception e1) {
         System.out.println("已到根目录,不能再返回");
        }
       }
      });
      
      jb3 = new JButton("前进");
      add(jb3);
      jb3.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent e) {
        refresh_jl(new File(jt1.getText())) ;
       }
      });
      
      jb4 = new JButton("发送/接收");
      add(jb4);
      jb4.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent e) {
        open_jdia();
       }
      });
      
      jl.addMouseListener(new MouseListener() {
       public void mouseReleased(MouseEvent e) {}
       
       @Override
       public void mousePressed(MouseEvent e) {
    //    System.out.println("选择" + jl.getSelectedValue());
        jt1.setText(path+jl.getSelectedValue());
        if(e.getClickCount()==2) {
         open_file();
        }
       }
       
       @Override
       public void mouseExited(MouseEvent e) {}
       
       @Override
       public void mouseEntered(MouseEvent e) {}
       
       @Override
       public void mouseClicked(MouseEvent e) {}
      });
     }
     
     //双击鼠标左键打开文件
     public void open_file() {
      String str = path+jl.getSelectedValue();
      if(str.endsWith(".jpg") || str.endsWith(".png") || str.endsWith(".mp3") || str.endsWith(".mp4") || str.endsWith(".MP4")) {
       String thePlayerPath = "C:\\Program Files\\Windows Media Player\\wmplayer.exe "+str; /*播放器的路径*/ 
       try{ 
        Process ps = Runtime.getRuntime().exec(thePlayerPath);
       }catch (IOException e){ 
        e.printStackTrace(); 
       } 
      }else {
    //   System.out.println("不是媒体格式");
       refresh_jl(new File(jt1.getText())) ;//尝试打开文件夹
      }
     }
     
     //打开对话框
     public void open_jdia() {
      JDialog jd = new JDialog(frame, true);
      jd.setBounds(frame.getX()+frame.getWidth()/2-250, frame.getY() + frame.getHeight()/2-150, 500, 300);
      jd.getContentPane().add(new JScrollPane((jla = new JTextArea())));
      jla.setFont(new Font("仿宋", Font.BOLD, 25));
      new Thread(new Runnable() {
       public void run() {
        gettDate();
       }
      }).start();
      //对话框添加监听,关闭对话框关闭服务器
      jd.addWindowListener(new WindowListener() {
       public void windowOpened(WindowEvent e) {}
       public void windowIconified(WindowEvent e) {}
       public void windowDeiconified(WindowEvent e) {}
       public void windowDeactivated(WindowEvent e) {}
       public void windowClosing(WindowEvent e) {
        if(ser != null) {
         try {
          ser.close();
         } catch (IOException e1) {
          e1.printStackTrace();
         }
        }
       }
       public void windowClosed(WindowEvent e) {}
       public void windowActivated(WindowEvent e) {}
      });
      jd.setVisible(true);
     }
     
     //执行接收或者发送数据
     public void gettDate(){
      try {
       File f = new File(path+jl.getSelectedValue());//获取选择的文件
       String ip1 = jt2.getText();//手机ip
       String ip2 = InetAddress.getLocalHost().getHostAddress()+":"+3838;
       jla.setText("手机ip:"+ip1 + "\n" + "本机ip:"+ip2);
       //读取ip
       String[] str1 = ip1.split(":");
       String[] str2 = ip2.split(":");
       ser = new ServerSocket(Integer.parseInt(str2[1]), 1, InetAddress.getByName(str2[0]));
       jla.setText(jla.getText() + "\n" + "服务器创建成功,等待连接");
       Socket soc = ser.accept();
       jla.setText(jla.getText() + "\n" + "已有设备连接,读取请求命令");
       InputStream input = soc.getInputStream();
       OutputStream output = soc.getOutputStream();
       //接收手机机发过来的数据,是接收文件还是发送文件
       byte[] b = new byte[1024];
       int a =  input.read(b, 0, b.length);//尝试读取1024字节数据
       int ca = a;
       //如果没有读满,继续读,
       String stcv = new String(b, 0, a,"utf-8");
       String sttr = stcv;
       jla.setText(jla.getText() + "\n" + "本次读取到数据:"+ca + "数据详细如下\n"+sttr+"\n分析请求数据中");
       //把电脑准备发送的文件发送给手机
       String sssr = "ok" + "\r\n" + f.getName() + "\r\n" + f.length()+"\r\n";
          OutputStreamWriter or = new OutputStreamWriter(output,"utf-8");
          or.write(sssr);//发送指令
          or.flush();
       //分析请求数据
       String[] stty = sttr.split("\r\n");
       b = new byte[1024*1000];
       if(stty[0].equals("接收") || stty[0].equals("发送")) {
        jla.setText(jla.getText() + "\n" + "指令:"+stty[0] + "\n文件名:" + stty[1] + "\n大小:" + stty[2]);
        if(stty[0].equals("接收")) {//执行电脑发送数据给手机
         InputStream infile = new FileInputStream(f);
         jla.setText(jla.getText() + "\n" + "尝试发送数据至手机\r\n文件名:"+f.getName() + "\r\n总共:" + f.length());
         a=0;
         int alr = 0;
         String strlle = jla.getText();
         while(a != -1) {
          a = infile.read(b);//读取文件数据
          if(a != -1) {
           alr += a;//记录已发送数据长度
           output.write(b, 0, a);//发送文件数据
           jla.setText(strlle + "\n" + "已发送:" + alr + "\t总共:" + f.length());
          }
         }
         infile.close();
         jla.setText(jla.getText()+ "\n" + "文件已发送");
        }else {//接收手机发送过来的文件写入磁盘
         OutputStream out1 = new FileOutputStream(new File(path+"/"+stty[1]));
         a=0;
         int alr = 0 ;
         jla.setText(jla.getText() + "\n" + "正在写入文件到磁盘");
         String strlle = jla.getText();
         while(a != -1) {
          a = input.read(b);//获取发送过来的数据
          if(a != -1) {
           alr+=a;
           out1.write(b,0,a);//写入数据至磁盘
           jla.setText(strlle + "\n" + "已写入:" + alr + "\t总共:" + stty[2]);
          }
         }
         out1.close();
         jla.setText(jla.getText()+ "\n" + "文件已写入磁盘:");
        }
       }else {
        jla.setText(jla.getText() + "\n" + "错误的指令,无法识别");
       }
       
       output.close();
       input.close();
       soc.close();
       ser.close();
       jla.setText(jla.getText() + "\n" + "程序执行完毕,关闭弹窗即可");
      } catch (UnknownHostException e) {
       e.printStackTrace();
      } catch (NumberFormatException e) {
       e.printStackTrace();
      } catch (IOException e) {
       e.printStackTrace();
      }
     }
     
     //刷新列表中的内容
     public void refresh_jl(File f) {
      jl.setListData(gett1(f));
      jl.setSelectedIndex(0);
     }
     
     //获取指定文件夹下的文件名
     public String[] gett1(File file) {
      String[] strf = {"文件夹为空"};
      if(file.isDirectory()) {
       strf = file.list();
       path = file.getAbsolutePath();
       jt1.setText((path+="/"));
      }else {
    //   System.out.println("该文件不是文件夹");
       open_jdia();
       jla.setText("不是文件夹,或不支持改媒体文件");
      }
      return strf;
     }
     
     //改变控件大小位置,自适应
     public void sett1() {
      js.setBounds(getWidth()/2-(int)(getWidth()*(18d/20d))/2, getHeight()/2-(int)(getHeight()*(18d/20d))/2+(int)(getHeight()*(1d/20d)), (int)(getWidth()*(18d/20d)), (int)(getHeight()*(18d/20d)));
     
      jb1.setBounds(10, 10, 100, 30);
      jb2.setBounds(120, 10, 100, 30);
      jb3.setBounds(230, 10, 100, 30);
      jt1.setBounds(340, 10, 300, 30);
      jt2.setBounds(650, 10, 200, 30);
      jb4.setBounds(860, 10, 100, 30);
     }
     
     public void paint(Graphics g) {
      super.paint(g);
      if(getWidth() != 500 || getHeight() != hh) {
       wh = getWidth();
       hh = getHeight();
       sett1();
      }
     }

    安卓控件布局
    在这里插入图片描述
    控件布局详细代码
    在这里插入图片描述

    <LinearLayout
        android:id="@+id/linearLayout"
        android:layout_width="0dp"
        android:layout_height="480dp"
        android:layout_marginTop="1dp"
        android:orientation="vertical"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">
    
        <ListView
            android:id="@+id/list1"
            android:layout_width="wrap_content"
            android:layout_height="match_parent" />
    </LinearLayout>
    
    <LinearLayout
        android:id="@+id/linearLayout2"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginBottom="12dp"
        android:orientation="vertical"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent">
    
        <EditText
            android:id="@+id/edit1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="192.168.1.22:3838" />
    
        <TextView
            android:id="@+id/text1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="TextView" />
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
    
            <Button
                android:id="@+id/bu1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="发送" />
    
            <Button
                android:id="@+id/bu2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="接收" />
        </LinearLayout>
    
    </LinearLayout>

    安卓逻辑代码MainActivity.java类的详细代码
    在这里插入图片描述

    TextView text1;//提示选择项
    String fileName;//选择项文件名
    String[] filename ;//存储所有文件名字符串
    String path = "sdcard/DCIM/Camera/";//相册路径
    
    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        text1 = (TextView) findViewById(R.id.text1);
        text1.setText("本机ip:"+getIpAddress(MainActivity.this)+":3838");
    
        ArrayAdapter<String> adapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_list_item_1,
                (filename=gett1(new File("sdcard/DCIM/Camera"))));
        ListView listView = (ListView) findViewById(R.id.list1);
        listView.setAdapter(adapter);
    
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                text1.setText("当前选择:"+(fileName=filename[position]));
            }
        });
    
        Button bu1 = (Button) findViewById(R.id.bu1);
        Button bu2 = (Button) findViewById(R.id.bu2);
    
        bu1.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                new Thread(new Runnable() {
                    public void run() {
                        try {
                            sett1("发送");
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }).start();
            }
        });
        bu2.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                new Thread(new Runnable() {
                    public void run() {
                        try {
                            sett1("接收");
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }).start();
            }
        });
    }
    
    //发送或接收文件
    public void sett1(String str) throws IOException {//传入指令
        //连接电脑
        EditText et1 = (EditText) findViewById(R.id.edit1) ;
        String[] strt = (et1.getText()+"").split(":");
        int port = Integer.parseInt(strt[1]);
        Socket soc = new Socket(InetAddress.getByName(strt[0]), port);//连接服务器
        InputStream input = soc.getInputStream();
        OutputStream out1 = soc.getOutputStream();
        File f1 = new File(path+fileName);//本机选择文件
        //把文件数据发送到电脑
        String sssr = str + "\r\n" + f1.getName() + "\r\n" + f1.length()+"\r\n";
        OutputStreamWriter or = new OutputStreamWriter(out1,"utf-8");
        or.write(sssr);//发送指令
        or.flush();
        //接收服务器发过来的文件信息
        byte[] b = new byte[1024];
        int a =  input.read(b, 0, b.length);//尝试读取1024字节数据
        int ca = a;
        String stcv = new String(b, 0, a,"utf-8");
        String sttr = stcv;//读取到的数据,包括真实数据
        //分析请求数据
        String[] stty = sttr.split("\r\n");
        b = new byte[1024*500];
        if(str.equals("接收")){
            if(stty[0].equals("ok")){
                File fil = new File(path+stty[1]);//创建文件
                OutputStream out11 = new FileOutputStream(fil);
                a=0;
                while(a!=-1){
                    a = input.read(b);
                    if(a!=-1){
                        out11.write(b, 0, a);
                    }
                }
                out11.close();
            }
        }
        if(str.equals("发送")){
            if(stty[0].equals("ok")){
                InputStream in1 = new FileInputStream(f1);
                b = new byte[1024];
                a= 0;
                while(a!=-1){
                    a = in1.read(b);
                    if(a!=-1){
                        out1.write(b, 0 , a);
                    }
                }
                in1.close();
            }
        }
        input.close();
        out1.close();
        soc.close();
    }
    
    //读取相册文件夹内所有文件返回文件名
    //获取指定文件夹下的文件名
    public String[] gett1(File file) {
        String[] strf = {""};
        if(file.isDirectory()) {
            strf = file.list();
        }else {
            System.out.println("该文件不是文件夹");
            strf[0] = "不是文件夹";
        }
        return strf;
    }
    
    //获取ip
    public static String getIpAddress(Context context) {
        // 获取WiFi服务
        WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
        // 判断WiFi是否开启
        if (wifiManager.isWifiEnabled()) {
            // 已经开启了WiFi
            WifiInfo wifiInfo = wifiManager.getConnectionInfo();
            int ipAddress = wifiInfo.getIpAddress();
            String ip = intToIp(ipAddress);
            return ip;
        } else {
            // 未开启WiFi
            return getIpAddress();
        }
    }
    
    private static String intToIp(int ipAddress) {
        return (ipAddress & 0xFF) + "." +
                ((ipAddress >> 8) & 0xFF) + "." +
                ((ipAddress >> 16) & 0xFF) + "." +
                (ipAddress >> 24 & 0xFF);
    }
    
    private static String getIpAddress() {
        try {
            NetworkInterface networkInterface;
            InetAddress inetAddress;
            for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements(); ) {
                networkInterface = en.nextElement();
                for (Enumeration<InetAddress> enumIpAddr = networkInterface.getInetAddresses(); enumIpAddr.hasMoreElements(); ) {
                    inetAddress = enumIpAddr.nextElement();
                    if (!inetAddress.isLoopbackAddress() && !inetAddress.isLinkLocalAddress()) {
                        return inetAddress.getHostAddress();
                    }
                }
            }
            return null;
        } catch (SocketException ex) {
            ex.printStackTrace();
            return null;
        }
    }

    声明所需权限,因为没有写动态申请权限,需手动给App存储权限才能运行,不然会奔溃,安卓10还要特别注意图中注释
    在这里插入图片描述

    展开全文
  • 工作中和一个扫描仪厂家对接,厂家写了一个插件。 可以在客户的电脑上开启一个http服务供网页调取,以此实现... 于是我就想到一个优化的办法,在前端将图片压缩之后传输到后台,并且不能失真。扫描出来的图片大小只有 7
    工作中和一个扫描仪厂家对接,厂家写了一个插件。
    可以在客户的电脑上开启一个http服务供网页调取,以此实现网页和扫描仪的交互。
    
    扫描仪工作完成后,调取一个接口,从本地的扫描结果中返回图片的base64。
    然后,页面上再将base64一个个的传输到后台,获取服务器返回的url之后在系统中使用。
    
    	测试的时候,非常完美,但是实际使用的时候,却产生一个问题,客户的网络带宽比较低,导致上传图片的过程
    就很慢。
    	于是我就想到一个优化的办法,在前端将图片压缩之后传输到后台,并且不能失真。扫描出来的图片大小只有
    700~800k左右,体积已经比较小了,但是base64会导致数据包变大,一张图片的base64在1m以上。
    	
    	首先,先将base64转换成二进制对象
    
    	//base64转二进制
    	var strData = atob(base64)
    	var charData = strData.split('').map(function(x) { return x.charCodeAt(0) })
    	var binData = new Uint8Array(charData)
    
    	然后,再用pako.js将数据压缩
    
    	var str = pako.gzip(binData);
    
    	最后一步发送数据的时候,遇到一个问题,我用jquery封装的ajax方法发送数据的时候,浏览器会直接卡死。
    后来我在网上找到了一个用js原生方法的写法,就正常。
    
    	var oReq = new XMLHttpRequest();
    	oReq.open("POST", "后台url", true);// 请求的类型 后台的url 是否使用异步传输
    	oReq.onload = function (oEvent) {
    		//这里是请求成功之后触发
    		//oReq.responseText 可以获取后台返回的信息
    	};
    	
    	//这里设置发送的数据
    	oReq.send(str);
    
    	后台使用@RequestBody byte[] 就能接收到数据
    
    @PostMapping("/common/upimg")
        @ResponseBody
        public AjaxResult uploadBase64(@RequestBody byte[] data) throws Exception
        {
            try
            {
                // 上传文件路径
                String filePath = RuoYiConfig.getProfile() + "/fileImgs/";
                
                String currentDir = DateUtils.datePath();
                // 上传并返回新文件名称
                String fileName = UUID.randomUUID(true) + ".jpg";
                
                FileUtil.writeBytes(ZipUtil.unGzip(data), filePath + currentDir + "/" + fileName);
                
                String pathFileName = Constants.RESOURCE_PREFIX + "/fileImgs/" + currentDir + "/" + fileName;
                
                String url = serverConfig.getUrl() + pathFileName;
                AjaxResult ajax = AjaxResult.success();
                ajax.put("fileName", pathFileName);
                ajax.put("url", url);
                
                return ajax;
            }
            catch (Exception e)
            {
            	e.printStackTrace();
                return AjaxResult.error(e.getMessage());
            }
        }
    
    我这里是使用的ruoyi的后台通用上传方法修改的,解压是用的hutool封装的方法。
    建议能找到封装好的工具的话,尽量用封装好的工具类。但是封装好的工具也不一定是完全满足要求的。
    这个时候,就要自己尝试造轮子了。
    
    展开全文
  • 最近做一个树莓派的项目要把树莓派的数据传输到本地电脑上进行处理,网上查了很多解决方案,因为两种语言的不同网上关于java与python的sokect 互传比较少,下面是自己按照自己的思路写的socket供大家参考,有bug之处...
  • 我的是 如何找到这个路径? 1,传输图片是不会有这个选项“在文件中显示” 2 但是传输文件->右键->会有这个选项“在文件中显示” 然后就可以看到路径了 ...
  • 本文所写的程序能够实现两台不同的电脑下的图片传输,将A电脑某一文件夹下所有的图片(文件夹里面只有.jpg格式的图片),传输到B电脑程序所在的目录下。 我用两台Ubuntu的虚拟机模拟两台不同的电脑 A电脑编写python...
  • 文章目录项目说明实现步骤代码实现服务器1、导入需要的库2、声明协议类型,同时生成 socket 连接对象3、绑定在服务器中需要监听的端口并开始监听4、获得服务器中的图片信息5、客户端上传请求后建立从服务器客户端...
  • 由于网上关于这两个语言间的代码较少而且混乱不好看懂,我就把自己这次项目的过程和问题在这里记录下来,希望能帮大家吧。 首先,在进行编码之前我们应该找好服务器的IP地址和可用的端口号。 以我自己的电脑为例...
  • 如上面的app截图中的功能,现在越来越多的app都具有了在电脑上通过网页wifi传输文件手机端的功能,不仅有文字类,也有图片类,还有视频类,前提是电脑和手机都在同一个wifi下。这个功能的实现也很简单,在这里...
  • 问题:手机如何实时传送摄像头的视频流到电脑端. 列出可行思路就行或解答我的疑问 手机是安卓7.0以上系统 android studio 3.2. 电脑是win7-win10系统 C# VS2015编程. 网络是局域网,IP可以固定下来. PS:我的想法 ...
  • 前提:手机和电脑在同一局域网下 1 电脑创建文件夹 ...10 测试,选取任意一张图片 点击左下角分享按钮 选择存储文件 存储已配置好的共享文件夹(我这里是以自己的Apple共享文件夹为例) 11 电脑查询.
  • 软件将文件传输的iPod iPad的iPhone和个人电脑之间Syncios 您是否正在寻找替代iTunes的复制各种文件您的iOS设备?如果你想另辟蹊径,图片,应用程序,音乐,电子书和更多复制您的设备没有iTunes,Syncios是真棒的...
  • Gpu视频传输

    2019-07-29 22:33:36
    a: 视频的话, 先要获得在摄像头前我们的图片,并且把它传输到电脑中. 注意: 要不断的获取. b:将图片转化为可传输的数据. 通过协议到达对方机器中 c:对方接收数据, 将图片还原成图片. 首先考虑如何获得图片? 要使用到...
  • 如今手机发展非常迅速,app的种类也琳琅满目,而... 如上面的app截图中的功能,现在越来越多的app都具有了在电脑上通过网页wifi传输文件手机端的功能,不仅有文字类,也有图片类,还有视频类,前提是电脑和手机都...
  • 随着苹果科技的快速发展,如今的iOS设备中已经自带投屏技术-AirPlay,可以直接将iPhone、iPad中的图像数据传输到电脑电视,苹果airplay是什么呢?具体该如何操作我们一起来了解一下吧。1、AirPlay是什么Airplay可以...
  • 导师让我把项目里OpenGl生成的图片通过UDP网络编程实时传输到电脑另一端,从一点不了解到实现图片单张传输,再到最后用TCP编程实现多张图片实时传输;没有能达到老师的要求,用UDP实现多张图片传输,这里有个问题,...
  • 前言:把视频从iphone设备拷贝至PC时出现错误:连接到系统上的设备没有发挥作用 尝试了更换USB口和USB线后还是没有...解决办法:打开设置—点开图片—找到传输到MAC或PC的选项—改为保留原片 就可以完美解决问...
  • 为了方便将图纸文件进行打开查看或是将其进行传输,都会需要将其进行转换成图片格式,具体应该怎么样进行操作,下面小编就要来教大家的就是电脑上怎么将多张CAD图纸文件快速转换成高清图片格式的全部操作步骤,希望...
  • 为您提供易我数据传输下载,易我数据传输是一款的电脑传输软件,在电脑间迁移数据、应用和帐户,将旧电脑上的文件转移新的Windows 10电脑,兼容Windows 10/8.1/8/7/Vista/XP,很轻松的将包括应用、图片、文稿、...
  • 我们可以在电脑中安装FTP工具负责将电脑中的数据传输到服务器当中,这是服务器就称为FTP服务器,而我们的电脑称为客户端。对于FTP服务器,用户可通过FTP软件和服务器建立连接,进行文件上传、删除、修改权限等操作。...
  • 为您提供iPhone Photo Manager Free 图形传输工具下载,iPhone Photo Manager Free是一款图片传输工具,通过iPhone Photo Manager Free,用户可以将iPhone、ipad和电脑的照片传输到电脑,然后通过电脑对照片进行传输...
  • Unity中的RPC机制不能直接将视频进行传输,所以要进行视频帧图片到字节的转换,在将字节流进行传输。 首先,客户端的代码如下 using UnityEngine; using System.Collections; public class Client : ...
  • JPEG是图像格式,PDF是文档格式,有时为了能在某些设备上打开JPEG,您需将...另外,将多个JPEG图片打包保存一个PDF文件会更方便进行文件分享与传输。本文将详细介绍在Windows、Mac以及手机上将JPEG转PDF的多种方法。
  • 仪器可以通过内网把数据传输到服务器,电脑从服务器查看数据,如果仪器到服务器内网线路故障或者断了,怎么可以实现临时搭建网路把仪器数据传输到服务器? 数据只能通过内网传输到服务器,外网一般情况进不了内网...
  • GoToMyCloud主要功能有远程桌面,文件传输(文件、图片、视频上传下载,通讯录导入导出),文件同步,远程开关机等功能。GoToMyCloud有PC版本,Android版和iOS版本,不仅可以让您从本地PC上操作远程PC,还可以从...

空空如也

空空如也

1 2 3 4 5 ... 15
收藏数 286
精华内容 114
关键字:

图片传输到电脑