** I can save image in remote Mysql database using this code.But I can not get full image quality from this code.Images were in really bad quality.Can some one suggest a solution for it?
**我可以使用此代码将图像保存在远程Mysql数据库中。但是我无法从此代码中获得完整的图像质量。图像质量非常差。有人建议使用它的解决方案吗?
Thanks in advance. **
提前致谢。 **
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 个解决方案
#1
2
Try below code :
试试以下代码:
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()
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);
}
Hope it will help you.
希望它会对你有所帮助。
#2
2
instead of using
而不是使用
photo.compress(Bitmap.CompressFormat.JPEG, 90, stream);
try using
尝试使用
photo.compress(Bitmap.CompressFormat.JPEG, 100, stream);
#1
2
Try below code :
试试以下代码:
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()
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);
}
Hope it will help you.
希望它会对你有所帮助。
#2
2
instead of using
而不是使用
photo.compress(Bitmap.CompressFormat.JPEG, 90, stream);
try using
尝试使用
photo.compress(Bitmap.CompressFormat.JPEG, 100, stream);