2010-11-21 5 views
1

Ich versuche, eine Bitmap zu verkleinern, die Transparenz enthält. Leider führen alle drei Methoden, die ich ausprobiert habe, zu Weiß, wo es volle Transparenz geben sollte. Ich möchte die Transparenz bewahren.Skalieren Sie eine Bitmap und bewahren Sie Alpha, auf BlackBerry

Das Bitmap I Skalierung bin immer quadratisch, so meine Funktionen setzen voraus, dass:

private static Bitmap scale1(int edge, final Bitmap res) { 
    int factor = 
     edge == 0 ? Fixed32.ONE : Fixed32.div(res.getHeight(), edge); 
    Bitmap scaled = PNGEncodedImage.encode(res). 
         scaleImage32(factor, factor).getBitmap(); 
    return scaled; 
} 

private static Bitmap scale2(int edge, final Bitmap res) { 
    Bitmap val = new Bitmap(edge,edge); 
    val.createAlpha(Bitmap.ALPHA_BITDEPTH_8BPP); 
    res.scaleInto(val, Bitmap.FILTER_BILINEAR); 
    return val; 
} 

private static Bitmap scale3(int edge, final Bitmap res) { 
    Bitmap val = new Bitmap(edge,edge); 
    val.createAlpha(Bitmap.ALPHA_BITDEPTH_8BPP); 
    Graphics g = new Graphics(val); 
    int[] pathX = new int[] {0, 0+edge, 0+edge, 0}; 
    int[] pathY = new int[] {0, 0, 0+edge, 0+edge}; 
    byte[] pathPointTypes = new byte[] { 
     Graphics.CURVEDPATH_END_POINT,Graphics.CURVEDPATH_END_POINT, 
     Graphics.CURVEDPATH_END_POINT,Graphics.CURVEDPATH_END_POINT}; 
    int factor = 
     edge == 0 ? Fixed32.ONE : Fixed32.div(res.getHeight(), edge); 
    g.drawTexturedPath(pathX, pathY, pathPointTypes, null, 
      0, 0, factor, Fixed32.toFP(0), Fixed32.toFP(0), factor, res); 
    return val; 
} 

Antwort

2

Es ist wie Graphics.drawBitmap sieht (...) verwendet Graphics.drawRGB (...) anstelle von Grafiken. drawARGB (...)

Die Unterscheidung ist, ob der Alphakanal verwendet wird, um die Bitmap zu zeichnen. Ich habe versucht, Graphics.drawARGB (...) direkt für einige andere transparente Bitmap-Arbeit zu verwenden, die ich gemacht habe, und das machte den Unterschied.

+0

Können Sie sich bitte diese Frage ansehen? http://stackoverflow.com/questions/5298718/resize-bitmap-on-blackberry-while-keeping-alpha-data Ich habe das Gefühl, Sie könnten es vielleicht beantworten. –

+0

Könnten Sie ein Beispiel veröffentlichen, wie Sie drawARGB verwendet haben? Tnx –

Verwandte Themen