Verhindern Bitmap zu groß, um in eine Textur android hochgeladen werden

? Pratik @ | Original: StackOverFlow
---

Ich brauche, um Originalbild im Vollbildmodus in der Galerie Formular anzuzeigen . Für Daumen wird es perfekt funktionieren, und wenn ich versuche, das Bild im Vollbildmodus mit Originalquelle zeigt sie nicht in der Lage ist, anzuzeigen. In den meisten Fällen, wenn die Bildauflösung höher als 2000, dann wird es Fehler Bitmap zu groß, um in eine Textur android hochgeladen werden, anzuzeigen.

Ich möchte dies zu verhindern, habe ich Google-Suche, aber nicht immer alle Antworten zu diesem.

---

Top 5 Antwort

1shem @

Sie brauchen nicht, das ganze Bild zu laden, weil es zu groß und wahrscheinlich das Telefon nicht in der Lage, die vollen Bitmap Pixel zeigen . Sie müssen es skalieren zuerst nach Ihrem Gerät Bildschirmgröße. Dies ist die beste Methode, die ich gefunden und es funktioniert ziemlich gut :  http://stackoverflow.com/questions/3331527/android-resize-a-large-bitmap-file-to-scaled-output-file

2Minas @

Schauen Sie sich dieses Beispiel http://developer.android.com/training/displaying-bitmaps/index.html

ImageResizer.decodeSampledBitmapFrom * Verwenden Sie diese Methode, um verkleinerte Bild.

3Gilbert92 @

i erstellt nur ein, wenn sonst Funktion zu überprüfen, ob das Bild größer als 1 M Pixel ist hier das Beispiel-Code :

public void onActivityResult(int requestCode, int resultCode, Intent data) {

   if (resultCode == RESULT_OK) {

     if (requestCode == SELECT_PICTURE) {

        Uri selectedImageUri = data.getData();
        selectedImagePath = getPath(selectedImageUri);
        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inSampleSize = 4;

        Bitmap bitmap = BitmapFactory.decodeFile(selectedImagePath);
        int height = bitmap.getHeight(), width = bitmap.getWidth();

        if (height > 1280 && width > 960){
            Bitmap imgbitmap = BitmapFactory.decodeFile(selectedImagePath, options);
            imageView.setImageBitmap(imgbitmap);

            System.out.println("Need to resize");

        }else {
            imageView.setImageBitmap(bitmap);
            System.out.println("WORKS");
        }