如何设置图像而不是布尔值?

时间:2012-12-05 05:54:31

标签: java android google-app-engine

我想将图像显示为从servlet到android app的布尔值。 Servlet将上传到谷歌应用引擎。 这是我的servlet。 “arrBool”值显示为一些随机值。

//

    resp.setContentType("text/plain");

    if (req.getParameterMap().containsKey("message"))
        message = req.getParameter("message");

    resp.getWriter().println("Server Said" + message);




    for (int i=0; i<arrBool.length; i++) {
        arrBool[i] = r.nextBoolean();
            if(arrBool[i]==true) {
                resp.getWriter().print(arrBool);
            }
    }

这是我的android应用程序文件:

//

RestClient client = new RestClient("http://machougul01.appspot.com/listenforrestclient");
        client.AddParam("message", "Hello two World");
//        client.AddParam("arrBool", "textView1");


    try
    {
        client.Execute(RequestMethod.GET);

    }
    catch (Exception e)
    {
        textView.setText(e.getMessage());
    }

    String response = client.getResponse();
    textView.setText(response);
}

输出显示“服务器说:你好两个世界”和arrBool值:“m9a9990a m9a9990” 我想将arrBool值设置为图像而不是m9a9990a。因此,如果选择了随机值,则如果为真,那么将从6中的1到6显示汽车数量。 请帮帮我。

2 个答案:

答案 0 :(得分:0)

尝试更改

resp.getWriter().print(arrBool);

resp.getWriter()打印(将String.valueOf(arrBool));

它会在你的回复中写一个字符串。

或者你可以改变这个

for (int i=0; i<arrBool.length; i++) {
        arrBool[i] = r.nextBoolean();
            if(arrBool[i]==true) {
                resp.getWriter().print(arrBool);
            }
    }

for (int i=0; i<arrBool.length; i++) {
        arrBool[i] = r.nextBoolean();
            if(arrBool[i]==true) {
                resp.getWriter().print(1);
            }
    }

因此,当您在客户端阅读回复时,您将获得响应行 “服务员说:你好两个世界” 111

然后你可以解析字符串,没有1或者是真的,显示或

答案 1 :(得分:0)

您需要做一些事情。

首先,您需要一些导入语句。也许你可以为base64使用apache commons,这个例子使用xerces。

import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;

接下来,你需要用布尔值创建一个图像:

BufferedImage image = new BufferedImage(wid,hgt,BufferedImage.TYPE_3BYTE_RGB);

final int BLACK = java.awt.Color.BLACK.getRGB();
final int WHITE = java.awt.Color.WHITE.getRGB();
for(int x = 0; x < wid; x++) {
    for(int y = 0; y < hgt; y++) {
        boolean val = array[x*wid + y];
        image.setRGB(x,y, val ? BLACK : WHITE);
    }
}

我可能在那里使用了二进制图像。这就是我随便知道的:)我相信你可以修补它来改变格式。

然后你需要将它转换为Base64

ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] bytes = out.toByteArray();
String imageText = Base64.encode(baos.toByteArray());

然后,您需要吐出一些引用该基础64的HTML:

String html = "<img src=\"data:image/bmp;" + imageText + "\" alt=\"Random booleans\">";

并在你的页面上吐出那个html,你应该全力以赴!