2017-05-14 3 views
-1

Dies ist mein Code zum Speichern von Bildern in ImageView, aber ich möchte den Bildnamen in My TextView Object speichern. Bitte helfen Sie dabei.Bildname in der Textansicht speichern

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 

     if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) { 

      filePath = data.getData(); 
      try { 

       bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), filePath); 
       imageView.setImageBitmap(bitmap); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 

    public String getStringImage(Bitmap bmp){ 
     ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
     bmp.compress(Bitmap.CompressFormat.JPEG, 100, baos); 
     byte[] imageBytes = baos.toByteArray(); 
     String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT); 
     return encodedImage; 
    } 

MainActivity.java 

public class MainActivity extends AppCompatActivity implements View.OnClickListener{ 


    public static final String UPLOAD_URL = "http://192.168.1.101:8080/ImageUpload/upload2.php"; 
    public static final String UPLOAD_KEY = "image"; 
    public static final String TAG = "MY MESSAGE"; 

    private int PICK_IMAGE_REQUEST = 1; 

    private Button buttonChoose; 
    private Button buttonUpload; 
    private Button buttonView; 


    private ImageView imageView; 

    private Bitmap bitmap; 

    //private Uri filePath; 
    private static Uri filePath; 
    private TextView tv1; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     buttonChoose = (Button) findViewById(R.id.buttonChoose); 
     buttonUpload = (Button) findViewById(R.id.buttonUpload); 
     buttonView = (Button) findViewById(R.id.buttonViewImage); 

     imageView = (ImageView) findViewById(R.id.imageView); 
     tv1 = (TextView)findViewById(R.id.textView); 

     buttonChoose.setOnClickListener(this); 
     buttonUpload.setOnClickListener(this); 
    } 

    private void showFileChooser() { 
     Intent intent = new Intent(); 
     intent.setType("image/*"); 
     intent.setAction(Intent.ACTION_GET_CONTENT); 
     startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 

     if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) { 

      filePath = data.getData(); 
      try { 

       bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), filePath); 
       imageView.setImageBitmap(bitmap); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 

    public String getStringImage(Bitmap bmp){ 
     ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
     bmp.compress(Bitmap.CompressFormat.JPEG, 100, baos); 
     byte[] imageBytes = baos.toByteArray(); 
     String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT); 
     return encodedImage; 
    } 

    private void uploadImage(){ 
     class UploadImage extends AsyncTask<Bitmap,Void,String> { 

      ProgressDialog loading; 
      RequestHandler rh = new RequestHandler(); 

      @Override 
      protected void onPreExecute() { 
       super.onPreExecute(); 
       loading = ProgressDialog.show(MainActivity.this, "Uploading Image", "Please wait...",true,true); 
      } 

      @Override 
      protected void onPostExecute(String s) { 
       super.onPostExecute(s); 
       loading.dismiss(); 
       Toast.makeText(getApplicationContext(),s,Toast.LENGTH_LONG).show(); 
      } 

      @Override 
      protected String doInBackground(Bitmap... params) { 
       Bitmap bitmap = params[0]; 
       String uploadImage = getStringImage(bitmap); 

       HashMap<String,String> data = new HashMap<>(); 
       data.put(UPLOAD_KEY, uploadImage); 

       String result = rh.sendPostRequest(UPLOAD_URL,data); 

       return result; 
      } 
     } 

     UploadImage ui = new UploadImage(); 
     ui.execute(bitmap); 
    } 

    @Override 
    public void onClick(View v) { 
     if (v == buttonChoose) { 
      showFileChooser(); 
     } 
     if(v == buttonUpload){ 
      uploadImage(); 
     } 
    } 
    } 

RequestHandler.java

public class RequestHandler { 

    public String sendGetRequest(String uri) { 
     try { 
      URL url = new URL(uri); 
      HttpURLConnection con = (HttpURLConnection) url.openConnection(); 
      BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream())); 

      String result; 

      StringBuilder sb = new StringBuilder(); 

      while((result = bufferedReader.readLine())!=null){ 
       sb.append(result); 
      } 

      return sb.toString(); 
     } catch (Exception e) { 
      return null; 
     } 
    } 

    public String sendPostRequest(String requestURL, 
            HashMap<String, String> postDataParams) { 

     URL url; 
     String response = ""; 
     try { 
      url = new URL(requestURL); 

      HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
      conn.setReadTimeout(15000); 
      conn.setConnectTimeout(15000); 
      conn.setRequestMethod("POST"); 
      conn.setDoInput(true); 
      conn.setDoOutput(true); 


      OutputStream os = conn.getOutputStream(); 
      BufferedWriter writer = new BufferedWriter(
        new OutputStreamWriter(os, "UTF-8")); 
      writer.write(getPostDataString(postDataParams)); 

      writer.flush(); 
      writer.close(); 
      os.close(); 
      int responseCode = conn.getResponseCode(); 

      if (responseCode == HttpsURLConnection.HTTP_OK) { 
       BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
       response = br.readLine(); 
      } else { 
       response = "Error Registering"; 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     return response; 
    } 

    private String getPostDataString(HashMap<String, String> params) throws UnsupportedEncodingException { 
     StringBuilder result = new StringBuilder(); 
     boolean first = true; 
     for (Map.Entry<String, String> entry : params.entrySet()) { 
      if (first) 
       first = false; 
      else 
       result.append("&"); 

      result.append(URLEncoder.encode(entry.getKey(), "UTF-8")); 
      result.append("="); 
      result.append(URLEncoder.encode(entry.getValue(), "UTF-8")); 
     } 

     return result.toString(); 
    } 
} 

enter image description here

Wenn ich auf geklickt mich nehmen jetzt eine Image-Datei zur Galerie wählen Sie Datei von hier zur Auswahl Ich möchte, dass, wenn ich Bild ausgewählt der Name von Bildshows in meiner Textansicht beschreibe mich bitte wie es geht.

+0

was meinst du mit 'Bildname'? –

+0

Danke für die Antwort von Hamid Reza, Button ImageView Dies ist mein derzeitiges Layout um Bilder auf den Server hochzuladen. Aber jetzt möchte ich das Bild auf den Server hochladen Button TextView, also um das zu vervollständigen möchte ich die Referenz des ausgewählten Bildes in meinem TextView. –

+0

Speichern Sie 'filePath' und' encodedImage' in statischen Objekten und verwenden Sie sie überall! –

Antwort

0

Try Code unten, hoffen, dass es für Sie arbeitet

Sie ist kann Dateinamen von URI unter Code erhalten:

File file = getFile(context,filePath); 
String imageName = file.getName(); 
TextView.setText(imageName); 

hier ist die getFile Funktion,

public static File getFile(Context context, Uri uri) { 
     if (uri != null) { 
      String path = getPath(context, uri); 
      if (path != null && isLocal(path)) { 
       return new File(path); 
      } 
     } 
     return null; 
    } 
0

Aus Ihre Frage, die ich interpretierte, dass Sie den Bildnamen möchten, ist hier ein Code, um den Bildnamen von Ihrem Pfad zu erhalten. Stattdessen können Sie den gesamten Bildnamen und Pfad in einer separaten Hashmap speichern und später einen beliebigen Bildnamen mit dem entsprechenden Bildpfad erhalten.

public static String getImages(Context context) { 
       Uri uri; 
       Cursor cursor; 
       int column_index_data, column_index_file_name; 
       String PathOfImage = null; 
       uri = android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI; 

       String[] projection = { MediaStore.MediaColumns.DATA, 
         MediaStore.MediaColumns.TITLE }; 
       //get you a cursor with which you can search all images in your device 
       cursor = context.getContentResolver().query(uri, projection, null, 
         null, null); 
       //get the column index of the Path of the image 
       column_index_data = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA); 
       //get the column index of the name of the image 
       column_index_file_name = cursor 
         .getColumnIndexOrThrow(MediaStore.MediaColumns.TITLE); 
       while (cursor.moveToNext()) { 
        PathOfImage = cursor.getString(column_index_data); 
        String name = cursor.getString(column_index_file_name); 
        Log.e("Manojit",PathOfImage+"\n"+name); 

        if(PathOfImage.equals(filepath)){ 
    //here you will get the title of the image 
    //from the result set the content of the Textview 
         return cursor.getString(column_index_file_name);} 
       } 
       return null; 
      } 
+0

Ich verwendete Sie Code, um Bildname in TextView anzuzeigen, aber es funktioniert nicht. –

+0

Ich werde meine Aktivität und XML-Dateien teilen, bitte überprüfen Sie und geben Sie mir Lösung.Manojit Paul –

+0

Wenn das Bild, das Sie arbeiten, in Ihrem Gerät ist, dann wird dieser Code funktionieren. –

Verwandte Themen