Partage
  • Partager sur Facebook
  • Partager sur Twitter

Android: Conversion image en byte

Sujet résolu
    21 mai 2013 à 21:08:02

    Bonjour tout le monde

    Alors voilà, j'aimerai convertir une image que je récupère à partir d'un lien URL en byte.

    J'y arrive très bien dans un programme java mais je ne trouve pas la solution pour le faire sous Android.

    Le code ci-dessous est celui que j'ai réalisé en Java et qui ne fonctionne pas pour mon application Android.

    URL monImage = new URL(picture);
    	    BufferedImage img = ImageIO.read(monImage);
    ByteArrayOutputStream baos=new ByteArrayOutputStream();
    		      ImageIO.write(img, "png", baos );
    		      byte[] imageInByte=baos.toByteArray();

    (picture = "http://...")


    Est-ce que quelqu'un saurait me dire comment faire?

    • Partager sur Facebook
    • Partager sur Twitter
      22 mai 2013 à 15:49:45

      Voici un exemple qui marche (normallement)

      // convert from bitmap to byte array
      public byte[] getBytesFromBitmap(Bitmap bitmap) {
          ByteArrayOutputStream stream = new ByteArrayOutputStream();
          bitmap.compress(CompressFormat.JPEG, 70, stream);
          return stream.toByteArray();
      }
      



      • Partager sur Facebook
      • Partager sur Twitter
        22 mai 2013 à 15:53:08

        Il y a une erreur dans ton code

        Voici une bonne version

        URL monImage = new URL(picture);
                BufferedImage img = ImageIO.read(monImage);
        ByteArrayOutputStream baos=new ByteArrayOutputStream();
                      ImageIO.write(img, "png", baos );
        baos.flush();
                      byte[] imageInByte=baos.toByteArray();
        baos.close();
        • Partager sur Facebook
        • Partager sur Twitter
          22 mai 2013 à 16:47:58

          Merci pour ta réponse. Mais ça plante avec cette méthode (sur Android en tout cas). Peut être que je m'y prends mal. Je prends une image à partir d'un lien URL, celle-ci étant au format jpg.

          C'est peut être l'image que je récupère et que je transforme mal en Bitmap.

          Voici mon code.

          URL monImage = new URL(picture);
          InputStream is = (InputStream) monImage.getContent();
          Bitmap bitmap = BitmapFactory.decodeFile(monImage.toString());
          byte[] byte_img_data = getBytesFromBitmap(bitmap); 
          
          
          
          
          public byte[] getBytesFromBitmap(Bitmap bitmap) {
          	    ByteArrayOutputStream stream = new  ByteArrayOutputStream();
          	    bitmap.compress(CompressFormat.JPEG, 70, stream);
          	    return stream.toByteArray();
          	}

          Tu saurais me dire ce qui ne va pas?

          • Partager sur Facebook
          • Partager sur Twitter
            22 mai 2013 à 20:15:37

            bitmap est il null? Tu as un logcat?

            Voici un exemple

            DefaultHttpClient client = new DefaultHttpClient();
            HttpGet request = new HttpGet(imageUrl);
            HttpResponse response = client.execute(request);
            HttpEntity entity = response.getEntity();
            int imageLength = (int)(entity.getContentLength());
            InputStream is = entity.getContent();
            
            byte[] imageBlob = new byte[imageLength];
            int bytesRead = 0;
            while (bytesRead < imageLength) {
                int n = is.read(imageBlob, bytesRead, imageLength - bytesRead);
                if (n <= 0)
                    ; // do some error handling
                bytesRead += n;
            }

            • Partager sur Facebook
            • Partager sur Twitter
              22 mai 2013 à 21:09:14

              Jai finalement réussi!

              Voici mon code:

              Bitmap bitmap = null;
              InputStream in = null;
              try {
                          in = OpenHttpConnection(picture);
                          bitmap = BitmapFactory.decodeStream(in);
                          in.close();
                      } catch (IOException e1) {
                          // TODO Auto-generated catch block
                          e1.printStackTrace();
                      }
              	byte[] byte_img_data=byte[] byte_img_data = getBytesFromBitmap(bitmap);
              		

              Avec OpenHttpConnection que j'ai trouvé sur le net:

              private InputStream OpenHttpConnection(String urlString)
                          throws IOException
                          {
                              InputStream in = null;
                              int response = -1;
              
                              URL url = new URL(urlString);
                              URLConnection conn = url.openConnection();
              
                              if (!(conn instanceof HttpURLConnection))                    
                                  throw new IOException("Not an HTTP connection");
              
                              try{
                                  HttpURLConnection httpConn = (HttpURLConnection) conn;
                                  httpConn.setAllowUserInteraction(false);
                                  httpConn.setInstanceFollowRedirects(true);
                                  httpConn.setRequestMethod("GET");
                                  httpConn.connect();
              
                                  response = httpConn.getResponseCode();                
                                  if (response == HttpURLConnection.HTTP_OK) 
                                  {
                                      in = httpConn.getInputStream();                                
                                  }                    
                              }
                              catch (Exception ex)
                              {
                                  throw new IOException("Error connecting");            
                              }
                              return in;    
                  }


              Voilà

              Merci pour ton aide en tout cas! :)

              • Partager sur Facebook
              • Partager sur Twitter

              Android: Conversion image en byte

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown