ビットマップのセットがあります。それらはある程度透明ですが、どの部分が透明であるかは事前に分かりません。私は透明な部分を除いた元のビットマップから新しいビットマップを作成したいが、正方形にしたい。ビットマップ変換:透明なビットマップから透明な部分を除外するビットマップの作成
は、私は、既存のマップのうち、ビットマップを作成する方法を知っているが、私は一部が透明であるかを調べる方法がわからないと達成するためにそれを使用する方法:私は、このイメージがそれを説明すると思います私の目標。
これは私がこれを行うことを計画する方法である:
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;
}
誰もがこれを達成する方法を知っていますか?
EDIT:
私はそれを左、右、上、下の値を見つけるために、次のアルゴリズムを使用して動作しました:あなたはトリミングしたいすべての画像は、多かれ少なかれある場合
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;
}
}
こんにちは、私のアプリケーションでは、私はまた、透明なピクセルをクロップしたい私は、アルファ0、完全に透明でピクセルを意味どのように透明画素では、ビットマップ – user1083266