2017-10-05 12 views
0

私は、ユーザーが複数を選択してbase64に変換して、サーバーに送信できるようにするアプリケーションで作業しています。それはギャラリーから複数の画像を選択し、BASE64に変換して、それをサーバーに送信するpossibileです複数の画像を選択してベース64に変換する方法は?

  Intent intent = new Intent(); 
      intent.setType("*/*"); 


      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { 
       intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); 
      } 
      intent.setAction(Intent.ACTION_GET_CONTENT); 
      startActivityForResult(Intent.createChooser(intent, "android.intent.action.SEND_MULTIPLE"), SELECT_PICTURE); 



@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // TODO Auto-generated method stub 

    if (requestCode == SELECT_PICTURE) { 

     if (resultCode == RESULT_OK) { 
      //data.getParcelableArrayExtra(name); 
      //If Single image selected then it will fetch from Gallery 
      filePath = data.getData(); 

       filePath = data.getData(); 
       if (null != filePath) { 
        try { 
         bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), filePath); 
         // img.setImageBitmap(bitmap); 
         if (filePath.getScheme().equals("content")) { 
          Cursor cursor = getContentResolver().query(filePath, null, null, null, null); 
          try { 
           if (cursor != null && cursor.moveToFirst()) { 
            file_name = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME)); 
            // text.setText(file_name+","); 
            img_name.add(file_name); 
            img_pic.add(getStringImage(bitmap)); 
            //  Toast.makeText(this, "1." + file_name, Toast.LENGTH_SHORT).show(); 
           } 
          } finally { 
           cursor.close(); 
          } 
         } else { 

          String path = data.getData().getPath(); 
          file_name = path.substring(path.lastIndexOf("/") + 1); 
          // text.setText(file_name); 
          img_name.add(file_name); 
          img_pic.add(getStringImage(bitmap)); 
          //Toast.makeText(this, "2." + file_name, Toast.LENGTH_SHORT).show(); 
         } 


        } catch (IOException e) { 
         e.printStackTrace(); 
        } 
+1

可能な複製(https://stackoverflow.com/questions/4830711/base-into-base64-stringへの変換方法) –

答えて

0

自分で画像を選択し、表示、管理するか、またはあなたがアンドロイドに頼ることができるようにする意向チューファイル確かにそれらを選択して返します。その後、提供されたURIを使用してイメージを取得し、変換して送信することができます。

ユーザーの選択した画像を取得するのは簡単なので、私はそれを投稿しませんが、それが慣れていない場合に備えて、ここにあなたを通すリンクがあります。 Select multiple images from android gallery

今asynctask

使用する必要がありますBase64でへの変換以下:[?Base64文字列に画像を変換する方法]

public class Base64EncodeMediaAsyncTask extends AsyncTask<Void, Void, MediaModel> { 

/*/////////////////////////////////////////////////////////////// 
// MEMBERS 
*//////////////////////////////////////////////////////////////// 
private static final String TAG = Globals.SEARCH_STRING + Base64EncodeMediaAsyncTask.class.getSimpleName(); 
private MediaModel mMediaModelToConvert; 


/*/////////////////////////////////////////////////////////////// 
// CONSTRUCTOR 
*//////////////////////////////////////////////////////////////// 
public Base64EncodeMediaAsyncTask(MediaModel model){ 
    mContext = context; 
    mMediaModelToConvert = model; //it's just a file wrapper, nothing special lol. 

} 


/*/////////////////////////////////////////////////////////////// 
// OVERRIDES 
*//////////////////////////////////////////////////////////////// 
@Override 
protected MediaModel doInBackground(Void... params) { 
    try{ 
     InputStream inputStream = new FileInputStream(mMediaModelToConvert.getAbsoluteLocalPath());//You can get an inputStream using any IO API 
     byte[] bytes; 
     byte[] buffer = new byte[(int) new File(mMediaModelToConvert.getAbsoluteLocalPath()).length()]; 
     int bytesRead; 

     ByteArrayOutputStream output = new ByteArrayOutputStream(); 
     while ((bytesRead = inputStream.read(buffer)) != -1) { 
      output.write(buffer, 0, bytesRead); 
     } 

     bytes = output.toByteArray(); 

     mMediaModelToConvert.setBase64String(Base64.encodeToString(bytes, Base64.DEFAULT)); 

    }catch (Exception ex){ 
     A35Log.e(TAG, "Failed to get base 64 encoding for file: " + mMediaModelToConvert.getAbsoluteLocalPath()); 
     return null; 

    } 

    return mMediaModelToConvert; 

} 
@Override 
protected void onPostExecute(MediaModel success) { 
    super.onPostExecute(success); 

} 

} 
関連する問題