如何在rest webservice中接收编码的字节数组并对其进行解码并将其另存为java中的图像

时间:2013-04-17 06:33:42

标签: java ajax java-ee resteasy

我正在尝试将图像的编码字节转换为base64格式并发送到其余的webservice。在服务内部我想解码它并将其转换回图像并希望将图像保存在我的本地路径中。它在解码期间失败。我不知道逻辑是否正确。需要一些指导

    @POST
    @Path("/imageupload")
    @Produces("text/html")
    @Consumes(MediaType.MULTIPART_FORM_DATA)
     public String execute(@FormDataParam("image") String inputfile) throws Exception
    {

            System.out.println("entered into service");
        BASE64Decoder decoder = new BASE64Decoder();
        ByteBuffer img=decoder.decodeBufferToByteBuffer(inputfile); 
        System.out.println();
            File outputfile = new File("D:\\TEST\\test.png");
                ImageIO.write(img, "png", outputfile);

逻辑是:

Step 1: get the byte array as string inside the service.
Step 2: decode it 
Step 3: write the byte into file with png format

1 个答案:

答案 0 :(得分:1)

如果您获得了正确编码的图像并且您确定它是png,我会这样做。

BASE64Decoder decoder = new BASE64Decoder();
byte[] decodedImageBytes = decoder.decodeBuffer(inputfile); 
final FileOutputStream out = new FileOutputStream(new File("D:\\TEST\\test.png"));
out.write(decodedImageBytes);
out.close();

P.S。确保以图像字符串形式接收图像。