J'ai un ensemble de bitmaps. Ils sont tous transparents dans une certaine mesure, et je ne sais pas à l'avance quelles parties sont transparentes. Je voudrais créer une nouvelle bitmap hors de l'image originale qui exclut les parties transparentes, mais dans un carré. Je pense que cette image explique:Conversion de bitmap: Création de bitmap qui exclut les côtés transparents de bitmap transparent
Je sais comment créer un bitmap d'un bitmap existant, mais je ne sais pas comment savoir quelle partie est transparente et comment l'utiliser pour atteindre mon but.
Voilà comment je prévois de faire ceci:
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;
}
Est-ce que quelqu'un sait comment y parvenir?
EDIT:
Je l'ai travail en utilisant l'algorithme suivant pour trouver gauche, à droite, en haut et les valeurs du bas:
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;
}
}
salut, dans ma demande je veux aussi recadrer les pixels transparents me s'il vous plaît aider comment supprimer les pixels transparents de bitmap – user1083266