使用JSON Web服务中的URI在Android中的服务器上传图像

时间:2011-08-04 01:07:04

标签: android json

我想在JSON Web服务中将图像发送到服务器(通过在JSON post方法中使用字符串参数),我想从URI路径获取图像。

2 个答案:

答案 0 :(得分:1)

以下类是我用来从给定网址下载图片(在我的情况下是jpeg)。它是我自己的代码中的一块,因此可能存在一些项目特定的东西。只需阅读以下内容:)。

public class BitmapFromUrl 
{
    private Bitmap myBitmap;

    public BitmapFromUrl(String imageUrl) 
    {
        URL myImageURL = null;

        try 
        {
            myImageURL = new URL(imageUrl);
        } 
        catch (MalformedURLException error) 
        {
            Log.e("tag", "The URL could not be formed from the provided String" + error);
        }

        if((myImageURL != null) && (imageUrl != null)) {
            try 
            {
                HttpURLConnection connection = (HttpURLConnection)myImageURL .openConnection();
                connection.setDoInput(true);
                connection.connect();
                InputStream input = connection.getInputStream();
                myBitmap = BitmapFactory.decodeStream(input);
            } 
            catch (IOException e) 
            {
                Log.e("tag", "The Bitmap could not be downloaded or decoded!" + e);
            }
        } else {
            Log.e("tag", "The provided URL(\"" + imageUrl + "\") does not seem to be valid.");
            myBitmap = null;
        }
    }

    public Bitmap getBitmap() 
    {
        return myBitmap;
    }
}

要发送获取此图像的字符串,您可以使用以下内容:

Bitmap bm = BitmapFactory.decodeFile("/thePathToYour/image.jpeg");
ByteArrayOutputStream output = new ByteArrayOutputStream();  
bm.compress(Bitmap.CompressFormat.JPEG, 100, output); //bm is the bitmap object   
byte[] bytes = output.toByteArray();

String base64Image = Base64.encode(bytes, Base64.DEFAULT);

现在您将图像作为字符串。在服务器上,您可以使用服务器编程语言的Base64方法将其更改回映像。

json.put(WebConstant.JSON_PUT_PROPERTY_BUZZ_IMAGE, base64Image);

这应该可以胜任。

答案 1 :(得分:0)

在您的行中:

json.put(WebConstant.JSON_PUT_PROPERTY_BUZZ_IMAGE, " SEND IMAGE as URI ");//buzzInfoBean.getBuzzImage());

“将图像作为URI发送”应该是最有可能的base64编码字符串,我不知道服务器期望什么,但这是最常见的。

查看this question

的答案

从本地uri获取图像

Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), uri1)