将路径图像从 Java 发送到 Python



我正在尝试将图像路径从java发送到python,路径已发送,但是当我想打开它时,它想要打开

Java代码

 public static void main(String[] args) {
      try {
                    // connect to python
                    ServerSocket server = new ServerSocket(8080);
                    Socket client = server.accept();
                    Process p = Runtime.getRuntime().exec("C:\Python27\Python C:\Users\acer\Desktop\py\a.py");
                    BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
                    PrintWriter out = new PrintWriter(client.getOutputStream(),true);
                    out.println("C:UsersacerDesktoppy6.bmp");
                    client.close();
                   // System.exit(0);
                } catch (IOException ex) {
                }
    }

蟒蛇代码

import socket
import random
import os, sys
import numpy
from PIL import Image
HOST = "localhost"
PORT = 8080
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((HOST, PORT))
data = sock.recv(1024)
d=str(data)
img = d
print "d",d
im = Image.open(data)
#print(im.size, im.format)
row, col = im.size
## some code.............

它给了这个

d 6.bmp
Traceback (most recent call last):
  File "C:UsersacerDesktoppya.py", line 18, in <module>
    im = Image.open(data)
  File "C:Python27libsite-packagesPILImage.py", line 2634, in open
    fp = builtins.open(filename, "rb")
IOError: [Errno 22] invalid mode ('rb') or filename: '6.bmprn'

我不知道是什么\r我只想发送图像路径以在Python中打开图像

当你像这样写数据时:

   out.println("C:UsersacerDesktoppy6.bmp");

您正在添加行尾分隔符。

当您像这样读取数据时:

   data = sock.recv(1024)
   d=str(data)

您将包括您在字符串中读取的所有数据...包括行分隔符。 这就是为什么错误消息说:

   IOError: [Errno 22] invalid mode ('rb') or filename: '6.bmprn'

看到rn了吗? 这就是行分隔符。

您需要从文件名中修剪行分隔符...

   im = Image.open(data.strip())

最新更新