2017-05-14 4 views
-1

이것은 ImageView에 이미지를 저장하는 코드이지만 My TextView 객체에 이미지 이름을 저장하고 싶습니다. 내가 원하는 여기에서 지금 이미지 파일을 선택하는 것이 갤러리에 데려다 파일을 선택 클릭하면이미지 이름을 텍스트보기에 저장하십시오.

@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

내가 이름 이미지를 선택하면 있음 내 textview에 보여 주는 이미지는 어떻게하는지 설명해주세요. 에서

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

가 대해서 getFile 기능입니다,

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

'이미지 이름'은 무엇을 의미합니까? –

+0

답장을 보내 주셔서 감사합니다 Hamid Reza, Button ImageView 이것은 이미지를 서버에 업로드하기위한 현재 레이아웃입니다.하지만 지금은이 레이아웃의 서버에 이미지를 업로드하고 싶습니다. Button TextView, 이렇게하면 TextView에서 선택한 이미지의 참조를 원합니다. –

+0

그래서'filePath'와'encodedImage'를 정적 객체 안에 저장하고 그것을 어디서나 사용할 수 있습니다! –

답변

0

코드 아래 봅니다, 당신

당신은 코드 아래 사용하여 URI에서 파일 이름을 얻을 수 있습니다

에 대한 작품을의 희망 귀하의 질문 나는 당신이 이미지 이름을 원한다고 해석 했으므로 여기에 당신이 가지고있는 경로에서 이미지 이름을 얻는 코드가 있습니다. 오히려 별도의 해시 맵에 모든 이미지 이름과 경로를 저장할 수 있으며 나중에 해당 이미지 경로가있는 이미지 이름을 얻을 수 있습니다.

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

:

+0

TextView에 이미지 이름을 표시하는 코드를 사용했지만 작동하지 않습니다. –

+0

내 활동 및 xml 파일을 공유하려고합니다. 해결책을 확인하고 제공하십시오 .Manojit Paul –

+0

작업중인 이미지가 장치에 있으면이 코드가 작동합니다. –

관련 문제