IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Lire une image et la convertir en bitmap


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2009
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2009
    Messages : 154
    Par défaut Lire une image et la convertir en bitmap
    Bonjour,

    Lorsque je veux stocker les images prises par mobile, sur le serveur, ça ne fonctionne pas, alors que dans un dossier du mobile ça fonctionne.

    Voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "IMG_App");
    File mediaFile = new File(mediaStorageDir.getAbsolutePath()+ File.separator +"IMGAndroid_" + timeStamp + ".jpg");
    Lecture des images à partir de mobile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    ArrayList nameValuePairs1 = new ArrayList();
    for (int i = 0; i <ListImg.size(); i++) {
     
        ByteArrayOutputStream bao = new ByteArrayOutputStream();
        File myDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + File.separator+"/IMG_App");    
     
        File file = new File (myDir, ListImg.get(i).getNom());
        //FileOutputStream out = new FileOutputStream(file);
        Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
     
        bitmap.compress(Bitmap.CompressFormat.PNG, 50, bao);
        byte[] ba = bao.toByteArray();
     
        // String ba1 = Base64.encodeBytes(ba);
        nameValuePairs1.add(new BasicNameValuePair("image" + i, Base64.encodeBytes(ba)));
    }
    Quelqu'un saurait-il m'indiquer où se situe le problème dans le 2eme code concernant la lecture d'image, depuis dossier de mobile ?

    Merci d'avance pour votre aide.

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2009
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2009
    Messages : 154
    Par défaut
    aucune idée!!

  3. #3
    Membre Expert
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Billets dans le blog
    1
    Par défaut
    Avec ce que tu as mis, on ne pourra pas vraiment t'aider ^^.

    tu ne nous indique pas la raison de l'echec:
    _ serveur inaccessible
    _ connection ok, mais pas de réponse du serveur
    _ serveur maison?

    et plein d'autre paramètre, ta question reformuler tel qu'on la comprends:

    J'essaye de joindre quelqu'un par téléphone mais ça ne marche pas, des idées?
    Imagine la plétor de cause pouvant engendrer ce problème.

    commence déjà par décrire les solutions que tu as essayer, ou au moins la configuration de ton application et de ton serveur pour qu'on en sache un peu plus.....

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2009
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2009
    Messages : 154
    Par défaut
    non c'est pas l'erreur de connexion avec serveur, car l’insertion des données dans la table ça fonctionne bien mais juste insertion des images qui est échoué.
    c'est pour cela j'ai questionné juste sur insertion des images,
    voici le code de mon activity photoActivity qui va prendre les images.
    pour enregistrement des images sur le dossier local ça marche bien.
    et aussi insertion de chemin dans la table de base donnée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
     
     protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_photo);
     
     
            captureImage();
              }
        }
      /**
         * Capturing Camera Image will lauch camera app requrest image capture
         */
        private void captureImage() {
            Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
     
           fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE);
     
            intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
           // intent.putExtra("return-data", true);
            // start the image capture Intent
            startActivityForResult(intent, CAMERA_CAPTURE_IMAGE_REQUEST_CODE);
        } /**
         * Here we store the file url as it will be null after returning from camera
         * app
         */
        @Override
        protected void onSaveInstanceState(Bundle outState) {
            super.onSaveInstanceState(outState);
     
            // save file url in bundle as it will be null on scren orientation
            // changes
          // outState.putParcelable("file_uri", fileUri);
        }
     
        @Override
        protected void onRestoreInstanceState(Bundle savedInstanceState) {
            super.onRestoreInstanceState(savedInstanceState);
     
            // get the file url
           // fileUri = savedInstanceState.getParcelable("file_uri");
        }
     
        /**
         * Receiving activity result method will be called after closing the camera
         * */
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            // if the result is capturing Image
            if (requestCode == CAMERA_CAPTURE_IMAGE_REQUEST_CODE) {
                if (resultCode == RESULT_OK) {
     
    					photoDAO imgDAO=new photoDAO(getApplicationContext());
    					Photo p=new Photo();
     
    							 String pathToImage = fileUri.getPath();
    						 if(pathToImage!=null){
    						 p.setNom(pathToImage);
    					 if(imgDAO.insertPhoto(p)>0){
    							 Toast.makeText(getApplicationContext(),
     
    										" vvvvvvvvvvvvvvvvvvvvvv", Toast.LENGTH_SHORT)
    		                         .show();
     
     
    					} else 
    						 Toast.makeText(getApplicationContext(),
    		                         "capture image:  nnnnnnnnnnnnnnnnnnn", Toast.LENGTH_SHORT)
    		                         .show();
    						 }
    					imgDAO.close();
     
    					Intent i = new Intent(getApplicationContext(),
    	   						AddActivity.class);
       				startActivity(i);
       				finish();
     
                } else if (resultCode == RESULT_CANCELED) {
                    // user cancelled Image capture
                    Toast.makeText(getApplicationContext(),
                            "User cancelled image capture", Toast.LENGTH_SHORT)
                            .show();
     
                } else {
                    // failed to capture image
                    Toast.makeText(getApplicationContext(),
                            "Sorry! Failed to capture image", Toast.LENGTH_SHORT)
                            .show();
                }
            } 
        }
        /**
         * returning image 
         */
        private static File getOutputMediaFile(int type) {
     
            // External sdcard location
            File mediaStorageDir = new File(
                    Environment
                            .getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
                    IMAGE_DIRECTORY_NAME);
     
            // Create the storage directory if it does not exist
            if (!mediaStorageDir.exists()) {
                if (!mediaStorageDir.mkdirs()) {
                    Log.d(IMAGE_DIRECTORY_NAME, "Oops! Failed create "
                            + IMAGE_DIRECTORY_NAME + " directory");
                    return null;
                }
            }
     
            // Create a media file name
           timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss",
                    Locale.getDefault()).format(new Date());
            File mediaFile;
            if (type == MEDIA_TYPE_IMAGE) {
                mediaFile = new File(mediaStorageDir.getPath() + File.separator
                        + "GreenApp_" + timeStamp + ".jpg");
     
            } else 
                return null;
     
     
            return mediaFile;
        }
    et voici comment je recupere les images :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    ArrayList nameValuePairs1 = new ArrayList();
    								for (int i = 0; i <ListImg.size(); i++) {
     
    									ByteArrayOutputStream bao = new ByteArrayOutputStream();
     
     
    									try{
    									    final Bitmap bitmap = BitmapFactory.decodeFile(ListImg.get(i).getNom().toString());
    									    bitmap.compress(Bitmap.CompressFormat.PNG,
    												0, bao);
    									}catch(Exception e){e.printStackTrace();}
    									// FileOutputStream fOut = new FileOutputStream(file);
    								       // bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fOut); // You can choose any format you want
     
     
    									byte[] ba = bao.toByteArray();
     
    									//String ba1 = Base64.encodeBytes(ba);
    //ici j'envoi l'image i
    									nameValuePairs1
    											.add(new BasicNameValuePair("image"
    													+ i, Base64.encodeBytes(ba)));
     
    								           }
    //ici le nombre des images
    nameValuePairs1
    								.add(new BasicNameValuePair("nb",String.valueOf(ListImg.size())));
     
     
    try {
    									Log.d("c bien entree  ", "c biennnnnnnnnnn");
     
     
    									HttpClient httpclient = new DefaultHttpClient();
     
    									HttpPost httppost = new HttpPost(
    											upLoadServerUri);
     
    									httppost.setEntity(new UrlEncodedFormEntity(
    											nameValuePairs1));
    									HttpResponse response = httpclient
    											.execute(httppost);
    									HttpEntity entity = response.getEntity();
    } catch (Exception e) {
    									/*
    									 * Toast.makeText(MainActivity.this,
    									 * "Sorry! Failed to connection server ",
    									 * Toast.LENGTH_SHORT) .show();
    									 */
    									e.printStackTrace();
    									Log.d("serroor",
    											"errt server " + e.getMessage());
    								}
    et voici mon fichier php concernant image:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <?php  
    //echo "entree";
     
    	if(!empty($_POST['nb']))
     $nb=$_POST['nb'];
     else $nb=0;
     for($i=0;$i<$nb;$i++){
    // $base."".$i = $_POST['image'.$i];
     //$filename= $_POST['nom_img'];
     
    	$buffer=base64_decode($_POST['image'.$i]);
    	header('Content-Type: bitmap; charset=utf-8');
    	$path = "img/imageAndroid".$i;
    	$handle = fopen($path, 'wb'); //le dossier imaga ça existe 
    	$numbytes = fwrite($handle, $buffer);
     }
     
    	//$filename = "ic_launcher.png";
     
    	fclose($handle);  
    	?>
    mon problème juste pour le déplacement des images depuis mobile vers serveur, sachant j'ai déjà test avec image "ic_launcher.png" qui existe localement et ça déplace bien;

    et merci d'avance

  5. #5
    Membre Expert
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Billets dans le blog
    1
    Par défaut
    Tu envois comment tes images?
    Via un formulaire php ou directement vers le serveur?
    comment tu reçois les images coté serveur? FTP?

    Es-tu sur d'avoir les droits pour déposer des fichiers?

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2009
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2009
    Messages : 154
    Par défaut
    je t'ai montré le fichier php, j'ai utilisé JSON via php.
    j'ai reçu les images réel directement au niveau de serveur juste a partir de php, en utilisant fonction encodeBytes(ba) de classe Base64 qui converti en BYtes, vous pouvez voir ça en 2eme code.
    je n'ai pas utilisé FTP.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Lire une image PGM
    Par ToTo13 dans le forum Langage
    Réponses: 7
    Dernier message: 09/10/2006, 18h39
  2. Lire une image (IPictureDisp)
    Par uranium-design dans le forum VB 6 et antérieur
    Réponses: 30
    Dernier message: 19/08/2006, 11h13
  3. Lire une image Tiff en C/cpp avec Lib tiff
    Par syn_42 dans le forum MFC
    Réponses: 4
    Dernier message: 04/01/2006, 21h28
  4. lire une image et tracer une fonction
    Par Battosaiii dans le forum C
    Réponses: 4
    Dernier message: 23/11/2005, 15h21
  5. lire une image au format RAW
    Par Anonymous dans le forum OpenGL
    Réponses: 5
    Dernier message: 20/05/2002, 00h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo