2015-10-23 8 views
5

** このコードを使用してリモートMysqlデータベースに画像を保存できます。しかし、このコードから完全な画像品質を得ることはできません。画像は本当に悪い品質です。それのための解決策?base64文字列からフル画質を得ることができません

ありがとうございます。コードの下 **

public void onActivityResult(int reqCode, int resCode, Intent data) { 

     if (resCode == RESULT_OK) { 
      if (reqCode == 1) { 
       Bitmap photo = null; 
       imageURI = data.getData(); 
       try { 



     photo = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageURI); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 

       Image.setImageBitmap(photo); 
       ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
       photo.compress(Bitmap.CompressFormat.JPEG, 90, stream); //compress to which format you want. 
       byte[] byte_arr = stream.toByteArray(); 
       String image_str = Base64.encodeToString(byte_arr, Base64.DEFAULT); 
       try { 
        image_str1 = URLEncoder.encode(image_str, "UTF-8"); 
       } catch (UnsupportedEncodingException e) { 
        e.printStackTrace(); 
       } 

      } 

     } 
     if (reqCode == CAMERA_REQUEST && resCode == RESULT_OK) { 

      Bitmap photo = (Bitmap) data.getExtras().get("data"); 
      Image.setImageBitmap(photo); 
      ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
      photo.compress(Bitmap.CompressFormat.JPEG, 90, stream); //compress to which format you want. 
      byte[] byte_arr = stream.toByteArray(); 
      String image_str = Base64.encodeToString(byte_arr, Base64.DEFAULT); 
      try { 
       image_str1 = URLEncoder.encode(image_str, "UTF-8"); 
      } catch (UnsupportedEncodingException e) { 
       e.printStackTrace(); 
      } 
      // Photo=getBytes(photo); 
     } 

    } 

答えて

2

試してみてください。

if (requestCode == SELECT_FILE && resultCode == RESULT_OK 
        && null != data) { 


       Uri selectedImage = data.getData(); 
       String[] filePathColumn = { MediaStore.Images.Media.DATA }; 


       Cursor cursor = getContentResolver().query(selectedImage, 
         filePathColumn, null, null, null); 

       cursor.moveToFirst(); 

       int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
       imgPath = cursor.getString(columnIndex); 
       cursor.close(); 
}else if (requestCode == REQUEST_CAMERA && resultCode == RESULT_OK) { 

       imgPath = fileUri.getPath(); 
       if (imgPath != null && !imgPath.isEmpty()) {        

       encodeImagetoString(); 

       } else { 
       Toast.makeText(getApplicationContext(),          getResources().getString(R.string.some_error_occured), 
            Toast.LENGTH_LONG).show(); 
         } 
} 

encodeImagetoString()

public void encodeImagetoString() { 
     new AsyncTask<Void, Void, String>() { 

      protected void onPreExecute() { 

      }; 

      @Override 
      protected String doInBackground(Void... params) { 
       BitmapFactory.Options options = null; 
       options = new BitmapFactory.Options(); 
       options.inSampleSize = 3; 
       bitmap = BitmapFactory.decodeFile(imgPath, options); 

       ByteArrayOutputStream stream = new ByteArrayOutputStream(); 

       bitmap.compress(Bitmap.CompressFormat.PNG, 50, stream); 
       byte[] byte_arr = stream.toByteArray(); 

       encodedString = Base64.encodeToString(byte_arr, 0); 
       return ""; 
      } 

      @Override 
      protected void onPostExecute(String msg) { 
       Log.e("Success" , "Success"); 
      } 

     }.execute(null, null, null); 
    } 

それはあなたを助けることを願っています。

+0

fileUri.getPathを(使用してみ

photo.compress(Bitmap.CompressFormat.JPEG, 90, stream); 

を使用して)。エラーを表示しています。つまり、構文エラーです。 – HRCJ

+0

は "imgPath"文字列ですか?それはグローバル変数であるべきですか? – HRCJ

+0

ありがとうございました。私のために働いたlot.it – HRCJ

2

代わりに

photo.compress(Bitmap.CompressFormat.JPEG, 100, stream); 
関連する問題