Wie verhindere ich, dass die drawBitmap von Android nur schwarze Bilder zeichnet?

Wie nach demoriginal question, Das Endergebnis ist ein gerundetes-rechtespng in einem (nImageView mit einem natürlich wirkenden Schlagschatten.

Ich lasse den Schatten arbeiten, aber wenn er zeichnet, wird das gesamte Bild schwarz.

Wie kann ich verhindern, dass das Originalbild (definitiv nicht schwarz) beim Hinzufügen des Schattens schwarz wird?

    BlurMaskFilter blurFilter = new BlurMaskFilter(2, BlurMaskFilter.Blur.OUTER);
    Paint shadowPaint = new Paint();
    shadowPaint.setMaskFilter(blurFilter);

    int[] offsetXY = new int[2];
    Bitmap originalBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.pier_t);
    Bitmap shadowImage = originalBitmap.extractAlpha(shadowPaint, offsetXY);

    Canvas c = new Canvas(shadowImage);
    c.drawBitmap(originalBitmap, -offsetXY[0], -offsetXY[1], null);

    imageView.setImageBitmap(shadowImage);





AKTUALISIEREN

Ich habe Joshs Vorschlag zum Kopieren in den richtigen Farbraum umgesetzt und jetzt funktioniert es großartig! Für zukünftige Suchende,dieser Code erzeugt einen Schlagschatten auf einer Bildansicht. Sie können sowohl mit x und y als auch mit der OUTER-Konstante herumspielen, um den gewünschten Effekt zu erzielen.

BlurMaskFilter blurFilter = new BlurMaskFilter(2, BlurMaskFilter.Blur.OUTER);
Paint shadowPaint = new Paint();
shadowPaint.setMaskFilter(blurFilter);

int[] offsetXY = new int[2];
Bitmap originalBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.pier_t);
Bitmap shadowImage = originalBitmap.extractAlpha(shadowPaint, offsetXY);
Bitmap shadowImage32 = shadowImage.copy(Bitmap.Config.ARGB_8888, true);

Canvas c = new Canvas(shadowImage32);
c.drawBitmap(originalBitmap, -offsetXY[0], -offsetXY[1], null);

imageView.setImageBitmap(shadowImage32);

Antworten auf die Frage(4)

Ihre Antwort auf die Frage