Bitmap-out-of-memory-Fehler in android...

Arbeite ich in einem android-Anwendung, und ich bin mit einem bitmap zu binden, ein Bild, um eine Bildansicht. Meine Forderung ist, sich zu drehen, die Bildansicht und geben Sie eine Grenze an, die Bildansicht. Habe ich erfolgreich durchgeführt, aber danach die Anwendung verwendet diese Aktivität zwei-drei mal ein "force close" Fehler-Meldung angezeigt: Bitmap von VM-Speicher. Bitte helfen Sie mir, zu minimieren, die bitmap-Speicher-Verbrauch in meinem code. Und lassen Sie mich wissen, wie Sie den code ändern, der für die gleichen?

final int BORDER_WIDTH = 5;
        //Set the border color
        final int BORDER_COLOR = Color.WHITE;
        Bitmap res = Bitmap.createBitmap(CAPTURE_IMAGE.getWidth() + 2
                * BORDER_WIDTH, CAPTURE_IMAGE.getHeight() + 2 * BORDER_WIDTH,
                CAPTURE_IMAGE.getConfig());
        System.gc();
        Canvas canvas = new Canvas(res);
        Paint paint = new Paint();
        paint.setColor(BORDER_COLOR);
        canvas.drawRect(0, 0, res.getWidth(), res.getHeight(), paint);

        canvas.drawBitmap(CAPTURE_IMAGE, BORDER_WIDTH, BORDER_WIDTH, paint);
        Matrix mat = new Matrix();
        //Set the Imageview position
        mat.postRotate(355);

        bMapRotate = Bitmap.createBitmap(res, 0, 0, res.getWidth(),
                res.getHeight(), mat, true);
        System.gc();
        res.recycle();
        res = null;
        paint = null;
        canvas = null;
        mat = null;
        //Set the captured bitmap image in the imageview
        mShareImageView.setImageBitmap(bMapRotate);
  • ich habe eine schöne JNI-Lösung, vermeidet out-of-Speicher durch das entfernen der max-heap-Größe Begrenzung Barriere . here ist ein link zu meinem snippet. einige Hinweise: - ersetzen Sie in dem code, der jede Instanz von "uint16_t" mit "uint32_t" (das ist der Fehler in meinem code, die ich habe danach gefragt) . - Eingabe-und Ausgabe-bitmap muss mit 8888 config (was ARGB ) - Eingabe von bitmap-recycelt werden, die während des Prozesses . - der code dreht das Bild um 90 Grad counter Uhr weisen . natürlich können Sie es ändern, je nachdem,
InformationsquelleAutor Arun | 2012-07-23
Schreibe einen Kommentar