2013-12-20 3 views
0

У меня есть вид изображения в xml следующим образом.Как загрузить ImageView в webservice в Android?

<ImageView 
     android:id="@+id/qrcode" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     android:layout_marginBottom="15dp" 
     android:layout_marginTop="86dp" /> 

И в этом изображении я создаю код qr. И я хочу отправить его на werervice.

public class GenerateQrcode extends ActivityGroup{ 
    String id; 
    ImageView image; 
    Bitmap bm; 
    Button qrusers,qrinvites,qrback; 
    @Override 
    public void onBackPressed() { 
     // TODO Auto-generated method stub 

    } 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.qrcode); 

    image = (ImageView) findViewById(R.id.qrcode); 

Я создал QR-код с помощью ZXing библиотеки и назначенного, что QR-код изображения для выше ImageView.

Итак, внутри изображения у меня есть код qr. Как отправить это изображение в webservice.

+0

ли вы искать для этого? –

+0

Да, я искал, но учебник обращается к изображению с SD-карты. , но я не хочу использовать SD-карту, потому что у меня уже есть изображение в представлении изображения и вы хотите загрузить его на сервер. – user2699728

+0

затем сохраните изображение в SD-карте и используйте этот код ... –

ответ

0

Try Следующий пример

public void upload(String filepath) throws IOException 
{ 
HttpClient httpclient = new DefaultHttpClient(); 
httpclient.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1); 
HttpPost httppost = new HttpPost("url"); 
File file = new File(filepath); 
MultipartEntity mpEntity = new MultipartEntity(); 
ContentBody cbFile = new FileBody(file, "image/jpeg"); 
mpEntity.addPart("userfile", cbFile); 
httppost.setEntity(mpEntity); 
System.out.println("executing request " + httppost.getRequestLine()); 
HttpResponse response = httpclient.execute(httppost); 
HttpEntity resEntity = response.getEntity(); 
     // check the response and do what is required 
    } 

это может помочь вам.

+0

Мое изображение не находится на SD-карте. HOw, чтобы поместить изображение в путь к файлу? – user2699728

+0

Сначала вы должны сохранить изображение во временную папку на SD-карте, а затем получить путь к файлу. Запустите загрузку. Использование AsynkTask будет предпочтительным для хорошей производительности. – VenuNalla

0

Сначала получите растровое изображение из ImageView по:

Bitmap bitmap=image.getDrawingCache() 

Позовите следующие функции в AsyncTask:

public void executeMultipartPost(Bitmap bm) throws Exception { 
     try { 
      ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
      bm.compress(CompressFormat.JPEG, 75, bos); 
      byte[] data = bos.toByteArray(); 
      HttpClient httpClient = new DefaultHttpClient(); 
      HttpPost postRequest = new HttpPost("<YourURL>");//<----------URL 
      ByteArrayBody bab = new ByteArrayBody(data, "forest.jpg"); 
      // File file= new File("/mnt/sdcard/forest.png"); 
      // FileBody bin = new FileBody(file); 
      MultipartEntity reqEntity = new MultipartEntity(
        HttpMultipartMode.BROWSER_COMPATIBLE); 
      reqEntity.addPart("uploaded", bab); 
      reqEntity.addPart("photoCaption", new StringBody("sfsdfsdf")); 
      postRequest.setEntity(reqEntity); 
      HttpResponse response = httpClient.execute(postRequest); 
      BufferedReader reader = new BufferedReader(new InputStreamReader(
        response.getEntity().getContent(), "UTF-8")); 
      String sResponse; 
      StringBuilder s = new StringBuilder(); 

      while ((sResponse = reader.readLine()) != null) { 
       s = s.append(sResponse); 
      } 
      System.out.println("Response: " + s); 
     } catch (Exception e) { 
      // handle exception here 
      Log.e(e.getClass().getName(), e.getMessage()); 
     } 
    } 
0

Вы можете преобразовать вид изображения в растровый файл,

image.buildDrawingCache(); 
Bitmap bmp = imageView.getDrawingCache(); 

Преобразуйте это в массив байтов

ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream); 
byte[] byteArray = stream.toByteArray(); 

отправить этот ByteArray, через WebService

+0

Не могли бы вы запрограммировать его здесь, как отправить этот bytearray в webservice? – user2699728

+0

какой веб-сервис вы используете? – nikvs

+0

http://cnapi.iconnectgroup.com/upload/fileuploadnew.aspx – user2699728

Смежные вопросы