0

我的目标是通过 hessian 协议将图像(.jpg.png)从客户端文件夹上传到 tomcat6 服务器。并在服务器上使用opencv进行图像处理,然后将图像返回给客户端。

问题1。以下转移步骤是否正确?

  • test.jpg图像放在客户端的文件夹中
    -->转换test.jpgin client.java( main.java) 类以BufferedImage
    -->将其转换BufferedImage为 mat 或Iplimage在服务器中使用openCV

我已经从使用 Hessian 的 Simple Messaging Example 中设置了一个 hello world 示例,并从Hessian 中搜索了大型二进制数据 和其他网站,但仍然不知道如何使用它!

问题2。是否有相关的 Java 示例代码?

(我使用的是ubuntu12+netbeans7.2)

4

1 回答 1

0

听起来您可能希望将图像视为客户端上的字节流,而不是使用 BufferedImage。处理后,你可以做任何你想做的事情,但是如果你只是发送文件内容,使用 hessian 会更容易。

Hessian 将 InputStream 理解为一种类型。所以你的最小方法调用 API 看起来像

InputStream convert(InputStream upload);

客户端将打开原始文件的输入流并直接发送该输入流:

InputStream is = new FileInputStream("test.jpg");
InputStream resultIs = hessianProxy.convert(is);
.... // save the result

需要注意的是,hessian 响应连接在您完成读取输入流之前仍然处于活动状态,因此您需要立即读取它。(它没有缓冲,这是它高效的原因之一。)

在服务器上,您需要从输入流中读取(再次,立即)。因此,返回一个从转换后的图像中读取的 InputStream:

InputStream convert(InputStream is) {
  ... // read from 'is' to your internal data
  InputStream result = ... // process
  return result;
}

您需要确保结果输入流在文件末尾自动关闭任何内容。您可能想要创建一个包装器来调用 close()。

于 2012-10-01T02:55:44.463 回答