Tengo un conjunto de mapas de bits. Todos son transparentes en cierta medida, y no sé de antemano qué partes son transparentes. Me gustaría crear un nuevo mapa de bits fuera del mapa de bits original que excluye las partes transparentes, pero en un cuadrado. Creo que esta imagen lo explica:Conversión de mapa de bits: crear un mapa de bits que excluya los lados transparentes del mapa de bits transparente
sé cómo crear un mapa de bits de un mapa de bits existente, pero no sé cómo averiguar qué parte es transparente y cómo utilizar eso para lograr mi meta.
Esta es la forma en que planeo hacer esto:
public Bitmap cutImage(Bitmap image) {
Bitmap newBitmap = null;
int width = image.getWidth();
int height = image.getHeight();
newBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(newBitmap);
//This is where I need to find out correct values of r1 and r1.
Rect r1 = new Rect(?, ?, ?, ?);
Rect r2 = new Rect(?, ?, ?, ?);
canvas.drawBitmap(image, r1, r2, null);
return newBitmap;
}
¿Alguien sabe cómo lograr esto?
EDIT:
Tengo que funcione utilizando el siguiente algoritmo para encontrar a la izquierda, derecha, arriba y los valores inferiores:
private int x1;
private int x2;
private int y1;
private int y2;
private void findRectValues(Bitmap image)
{
for(int x = 0; x < image.getWidth(); x++)
{
for(int y = 0; y < image.getHeight(); y++)
{
if(image.getPixel(x, y) != Color.TRANSPARENT)
{
System.out.println("X1 is: " + x);
x1 = x;
break;
}
}
if(x1 != 0)
break;
}
for(int x = image.getWidth()-1; x > 0; x--)
{
for(int y = 0; y < image.getHeight(); y++)
{
if(image.getPixel(x, y) != Color.TRANSPARENT)
{
System.out.println("X2 is: " + x);
x2 = x;
break;
}
}
if(x2 != 0)
break;
}
for(int y = 0; y < image.getHeight(); y++)
{
for(int x = 0; x < image.getWidth(); x++)
{
if(image.getPixel(x, y) != Color.TRANSPARENT)
{
System.out.println("Y1 is: " + y);
y1 = y;
break;
}
}
if(y1 != 0)
break;
}
for(int y = image.getHeight()-1; y > 0; y--)
{
for(int x = 0; x < image.getWidth(); x++)
{
if(image.getPixel(x, y) != Color.TRANSPARENT)
{
System.out.println("Y2 is: " + y);
y2 = y;
break;
}
}
if(y2 != 0)
break;
}
}
hola, en mi solicitud también quiero recortar los píxeles transparentes por favor me ayudan a cómo quitar píxeles transparentes de mapa de bits – user1083266