Create a transparent bitmap from an existing bitmap by replacing certain color with transparent
//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 <http://www.gnu.org/licenses/>.
*/
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);
}
}
Related examples in the same category