2D Graphics Android

//package org.dyndns.warenix.util;
import android.graphics.Bitmap;
import android.graphics.Color;
class Main{
  /**
   * create a transparent bitmap from an existing bitmap by replacing certain
   * color with transparent
   * 
   * @param bitmap
   *            the original bitmap with a color you want to replace
   * @return a replaced color immutable bitmap
   */
  public static Bitmap createTransparentBitmapFromBitmap(Bitmap bitmap,
      int replaceThisColor) {
    if (bitmap != null) {
      int picw = bitmap.getWidth();
      int pich = bitmap.getHeight();
      int[] pix = new int[picw * pich];
      bitmap.getPixels(pix, 0, picw, 0, 0, picw, pich);
      for (int y = 0; y < pich; y++) {
        // from left to right
        for (int x = 0; x < picw; x++) {
          int index = y * picw + x;
          int r = (pix[index] >> 16) & 0xff;
          int g = (pix[index] >> 8) & 0xff;
          int b = pix[index] & 0xff;
          if (pix[index] == replaceThisColor) {
            pix[index] = Color.TRANSPARENT;
          } else {
            break;
          }
        }
        // from right to left
        for (int x = picw - 1; x >= 0; x--) {
          int index = y * picw + x;
          int r = (pix[index] >> 16) & 0xff;
          int g = (pix[index] >> 8) & 0xff;
          int b = pix[index] & 0xff;
          if (pix[index] == replaceThisColor) {
            pix[index] = Color.TRANSPARENT;
          } else {
            break;
          }
        }
      }
      Bitmap bm = Bitmap.createBitmap(pix, picw, pich,
          Bitmap.Config.ARGB_4444);
      return bm;
    }
    return null;
  }
}
InputStream Utils
/* 
   Copyright 2010 Cesar Valiente Gordo
 
   This file is part of QuiteSleep.
    QuiteSleep is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
    QuiteSleep is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
    You should have received a copy of the GNU General Public License
    along with QuiteSleep.  If not, see .
*/
package es.cesar.quitesleep.utils;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
/**
 * 
 * @author Cesar Valiente Gordo
 * @mail cesar.valiente@gmail.com
 *
 */
public class InputStreamUtils {
  
  
  final static int BUFFER_SIZE = 4096;    // Tama??e los bloques a leer/escribir al comprimir en ZIP
  
  /**************************************************************************
   * 
   * @param in InputStream
   * @return String
   * @throws Exception
   * 
   * This function converts an InputStream to a String
   **************************************************************************/
  
  public static String InputStreamTOString (InputStream in) throws Exception {
    
    ByteArrayOutputStream outStream = new ByteArrayOutputStream();
       byte[] data = new byte[BUFFER_SIZE];
       int count = -1;  // Bytes leidos por bloque
       while ( (count = in.read(data,0,BUFFER_SIZE)) != -1 )
         outStream.write(data,0,count);
       
       data=null;       
       
       return new String (outStream.toByteArray(),"ISO-8859-1");
    
  }
  
  /**
   * This function converts an InputStream in a predefined encoding to a String.
   * 
   * @param in
   * @param encoding
   * @return
   * @throws Exception
   */
  public static String InputStreamTOString (InputStream in, String encoding) throws Exception {
    
    ByteArrayOutputStream outStream = new ByteArrayOutputStream();
       byte[] data = new byte[BUFFER_SIZE];
       int count = -1;  // Bytes leidos por bloque
       while ( (count = in.read(data,0,BUFFER_SIZE)) != -1 )
         outStream.write(data,0,count);
       
       data=null;       
       
       return new String (outStream.toByteArray(),encoding);
    
  }
  
  /**************************************************************************
   * 
   * @param in String
   * @return InputStream
   * @throws Exception
   * 
   * This function converts a String to a InputStream
   **************************************************************************/
  
  public static InputStream StringTOInputStream (String in) throws Exception {
    
    ByteArrayInputStream is = new ByteArrayInputStream(in.getBytes("ISO-8859-1"));
    
    return is;
  }
  
  
  /**************************************************************************
   * 
   * @param in InputStream
   * @return byte[]
   * @throws IOException
   * 
   * This function converts an InputStream to a byte[]   
   **************************************************************************/
  
  public static byte[] InputStreamTOByte (InputStream in) throws IOException {
    
    ByteArrayOutputStream outStream = new ByteArrayOutputStream();
       byte[] data = new byte[BUFFER_SIZE];
       int count = -1;  // Bytes leidos por bloque
       while ( (count = in.read(data,0,BUFFER_SIZE)) != -1 )
         outStream.write(data,0,count);
       
       data=null;       
       
       return outStream.toByteArray();
    
  }
    
  /**
   * This function converts a byte[] into a InputStream
   * 
   * @param in
   * @return
   * @throws Exception
   */
  public static InputStream byteTOInputStream (byte[] in) throws Exception {
    
    ByteArrayInputStream resultado = new ByteArrayInputStream(in);
    
    return resultado;    
  }
  
  /**
   * This function converts byte[] into a String
   * 
   * @param in
   * @return
   * @throws Exception
   */
  public static String byteToString (byte[] in) throws Exception {
    
    InputStream ins = byteTOInputStream(in);
    return InputStreamTOString(ins);
  }
  
  
  
}