2010-11-21 27 views
1

J'essaie de réduire une bitmap contenant de la transparence. Malheureusement, les trois méthodes que j'ai essayées aboutissent au blanc où il devrait y avoir une transparence totale. Je voudrais maintenir la transparence.Mise à l'échelle d'un bitmap et préservation de l'alpha, sur BlackBerry

Le bitmap que je suis mise à l'échelle est toujours carré, donc mes fonctions supposent que:

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; 
} 

Répondre

2

Il ressemble à Graphics.drawBitmap (...) utilise Graphics.drawRGB (...) au lieu de Graphics. drawARGB (...)

La distinction est de savoir si le canal alpha est utilisé pour dessiner le bitmap. J'ai essayé d'utiliser Graphics.drawARGB (...) directement pour d'autres travaux bitmap transparents que j'ai faits, et cela a fait la différence.

+0

Pourriez-vous s'il vous plaît jeter un oeil à cette question? http://stackoverflow.com/questions/5298718/resize-bitmap-on-blackberry-while-keeping-alpha-data J'ai l'impression que vous pourrez peut-être y répondre. –

+0

Pourriez-vous poster un exemple de la façon dont vous avez utilisé drawARGB? Tnx –