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());