Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将内存中的映像发布到rest服务器_Java - Fatal编程技术网

Java 将内存中的映像发布到rest服务器

Java 将内存中的映像发布到rest服务器,java,Java,我使用以下代码将内存中存在的映像写入磁盘: BufferedImage image = SwingFXUtils.fromFXImage(productBrandImage.getImage(), null); BufferedImage imageRGB = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.BITMASK); Graphics2D graphics = imageR

我使用以下代码将内存中存在的映像写入磁盘:

    BufferedImage image = SwingFXUtils.fromFXImage(productBrandImage.getImage(), null);
    BufferedImage imageRGB = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.BITMASK);
    Graphics2D graphics = imageRGB.createGraphics();
    graphics.drawImage(image, 0, 0, null);

    File imgFile = Utilities.constructImagePathForProductBrand(imageName);

    ImageIO.write(imageRGB, "png",
            imgFile);
    graphics.dispose();
程序中的其他地方使用以下代码将磁盘中的映像上载到REST服务器:

    HttpClientBuilder builder = HttpClientBuilder.create();
    HttpClient httpClient = builder.build();

    HttpPost httpPost = new HttpPost(uploadUrl);

    MultipartEntityBuilder entityBuilder = MultipartEntityBuilder.create();
    entityBuilder.addPart("filea", new FileBody(filea));
    entityBuilder.addPart("fileb", new FileBody(fileb));

    final HttpEntity entity = entityBuilder.build();
    httpPost.setEntity(entity);

    HttpResponse response = httpClient.execute(httpPost);
现在,我想直接将内存中的映像文件发布到服务器,而不首先写入磁盘。(在某些情况下,无需将映像写入磁盘。)


我知道,
MultipartEntityBuilder
有一个
addBinaryBody(字符串名,InputStream)
方法,但我不知道流是如何使这两个部分协同工作的。

您可以使用ImageIO写入流

ByteArrayOutputStream stream = new ByteArrayOutputStream();
ImageIO.write(imageRGB, "png", stream);
然后将二进制体添加到post请求中

MultipartEntityBuilder multiPartEntityBuilder = MultipartEntityBuilder.create();
multiPartEntityBuilder.addBinaryBody("Picture", stream.toByteArray(), ContentType.create("image/png"), "image.png");
httpPost.setEntity(multiPartEntityBuilder.build());