Verglichen mit der Bitmap von res/drawable
bekommen, ist die Qualität der gleichen Bitmap von intent
ist viel niedriger.Android - Bitmap Auflösung Verlust
Da das aktuelle Projekt wirklich um die Bildqualität besorgt ist, möchte ich die ursprünglichen Bitmaps (ohne Komprimierung oder Auflösungsverlust) vom Telefonspeicher erhalten.
Also, wie kann ich die hochwertige Bitmap von intent
bekommen?
I intent
verwenden, um eine Bitmap aus dem externen Speicher auf diese Weise zu bekommen,
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Button galleryBtn = new Button(getActivity());
galleryBtn.setText("Import Photo...");
galleryBtn.setOnClickListener(v -> {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
this.startActivityForResult(intent, 0);
});
//... some more code here
}
//... some more code here
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 0)
try {
if (data != null) {
InputStream stream = getActivity().getContentResolver().openInputStream(
data.getData());
imageBitmap = BitmapFactory.decodeStream(stream);
stream.close();
imageView.setImageBitmap(imageBitmap);
}
} catch (IOException e) {
e.printStackTrace();
}
}
Und ich bekomme die Bitmap aus res
auf diese Weise
imageBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.image);
getData ein Miniaturbild zurückgibt, müssen Sie den Uri von der Absicht bekommen mit 'getDataString()' dann die imave über den – tyczj
@tyczj Uri erhalten: Nicht wahr? 'data.getData()' gibt das 'Uri' an den Inhalt zurück, der über' ACTION_GET_CONTENT' ausgewählt wurde. – CommonsWare
"die Qualität der gleichen Bitmap, die von der Absicht kommt, ist viel niedriger" - AFAIK, beide Codewege durchlaufen die gleiche Bilddecodierungslogik. Bitte bearbeiten Sie Ihre Frage und verlinken Sie zu einem Bitmap, das Ihnen diesen Effekt gibt, zusammen mit Links zu Screenshots, die die Ergebnisse der Verwendung der Ressource zeigen und den 'ACTION_GET_CONTENT' -gelieferten' Uri' verwenden. – CommonsWare