Ich möchte ein Bild erfassen und im Speicher speichern. Zum Speichern verwende ich unter dem CodeSo speichern Sie das erfasste Bild ohne Komprimierung
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(this.requestCode == requestCode && resultCode == RESULT_OK){
File root = new File(Environment.getExternalStorageDirectory(), "Feedback");
if (!root.exists()) {
root.mkdirs();
}
File file = new File(root, Constants.PROFILE_IMAGE_NAME+".jpeg");
checkFlowIdisPresent(file);
Bitmap photo = (Bitmap)data.getExtras().get("data");
photo = ThumbnailUtils.extractThumbnail(photo, 300, 300);
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
photo.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
try {
FileOutputStream fo = new FileOutputStream(file);
fo.write(bytes.toByteArray());
fo.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
displayPic();
}
}
Jetzt ist das Problem, die Bildqualität ist verloren. So, wie man ein Bild speichert, ohne seine Qualität zu verlieren. wenn ich photoPickerIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
verwende, um Bild zu speichern, verliert es nicht seine Qualität, aber das Problem ist, dass ich das Bild 300 * 300 die Größe ändern wollte. Bitte helfen Sie mir.
extractThumbnail skaliert nicht, es schneidet –
auch versuchen zu verwenden: Bitmap.CompressFormat.PNG für bessere Qualität –
Zuschneiden ist in Ordnung für mich ... Bitmap.CompressFormat.PNG es hilft nicht –