Я пытаюсь изменить размер захваченного изображения так, чтобы он мог иметь размер меньше 1 МБ. Это то, что я до сих пор пробовал в OnActivityResult, но не удалось. Я получить учебник от Android take photo and resize it before saving on sd cardИзменить размер снятого изображения перед сохранением
ImageFitScreen.java
try {
Bitmap bitmap;
BitmapFactory.Options bitmapOptions = new BitmapFactory.Options();
bitmapOptions.inJustDecodeBounds = false;
bitmapOptions.inPreferredConfig = Bitmap.Config.RGB_565;
bitmapOptions.inDither = true;
bitmap = BitmapFactory.decodeFile(f.getAbsolutePath(), bitmapOptions);
Global.img = bitmap;
b.setImageBitmap(bitmap);
String path = android.os.Environment.getExternalStorageDirectory() + File.separator + "Phoenix" + File.separator + "default";
//p = path;
f.delete();
OutputStream outFile = null;
File file = new File(path, String.valueOf(System.currentTimeMillis()) + ".png");
try {
outFile = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.PNG, 100, outFile);
//pic=file;
outFile.flush();
outFile.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
}
Claims.java
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
if ((name != null && name.trim().length() > 0) && (result != null && result.trim().length() > 0)) {
// Toast.makeText(getActivity().getApplicationContext(), fk+"", Toast.LENGTH_LONG).show();
byte[] data=getBitmapAsByteArray(getActivity(),Global.img);// this is a function
Toast.makeText(getActivity().getApplicationContext(), data+"", Toast.LENGTH_LONG).show();
if(data==null)
{
Toast.makeText(getActivity(), "null", Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(getActivity(), " not null", Toast.LENGTH_LONG).show();
SB.insertStaffBenefit(name, data, description, result, fk);
}
});
return claims;
}
public static byte[] getBitmapAsByteArray(final Context context,Bitmap bitmap) {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 0, outputStream);
Toast.makeText(context, outputStream.size()/1024+"KB", Toast.LENGTH_LONG).show();
return outputStream.toByteArray();
}
В Claims.java, он по-прежнему отображается размер, который больше, чем 1Mb
Может кто-нибудь мне помочь? Благодаря
Пожалуйста, объясните, ** полностью и точно **, что означает «сбой». Например, вы рушитесь? Если это так, используйте LogCat для проверки вашей трассировки стека Java, связанной с вашим сбоем: https://stackoverflow.com/questions/23353173/unappro-myapp-has-stopped-how-can-i-solve-this – CommonsWare
@CommonsWare I ' Мне так жаль. Я редактировал свой пост. –
Это правильный способ реализации? Или я реализовал в неправильных местах? –