Java – How do I send image files (binary data) using socket.io?

How do I send image files (binary data) using socket.io?… here is a solution to the problem.

How do I send image files (binary data) using socket.io?

I can’t send data from Android Client to NodeJS Server.

I use Socket.IO-client Java library in my client.

However, there is not much information for me.

How do I send binary data from an android client to a nodejs server?

Solution

You can encode images using Base64:

   public void sendImage(String path)
    {
        JSONObject sendData = new JSONObject();
        try{
            sendData.put("image", encodeImage(path));
            socket.emit("message",sendData);
        }catch(JSONException e){
        }
    }

private String encodeImage(String path)
    {
        File imagefile = new File(path);
        FileInputStream fis = null;
        try{
            fis = new FileInputStream(imagefile);
        }catch(FileNotFoundException e){
            e.printStackTrace();
        }
        Bitmap bm = BitmapFactory.decodeStream(fis);
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        bm.compress(Bitmap.CompressFormat.JPEG,100,baos);
        byte[] b = baos.toByteArray();
        String encImage = Base64.encodeToString(b, Base64.DEFAULT);
        Base64.de
        return encImage;

}

So basically you’re sending a string to node.js

If you want to receive images, just decode them in Base64:

private Bitmap decodeImage(String data)
{
    byte[] b = Base64.decode(data,Base64.DEFAULT);
    Bitmap bmp = BitmapFactory.decodeByteArray(b,0,b.length);
    return bmp;
}    

Related Problems and Solutions