以编程方式编辑图像以便拼图使用

时间:2012-10-18 20:50:36

标签: java android

我正在制作滑动拼图(3x3 / 4x4 / 5x5,右下角切出)。但是,我无法弄清楚从哪里开始以编程方式切割图像(将从sdcard中的自己的图库或应用程序中的数据库加载)。 我一直在寻找互联网,没有什么真正帮助过我。

切割此图像并将其存储在新数据库中的最佳方法是什么(仍然能够滑动它们)?只需向正确的方向推进即可。

2 个答案:

答案 0 :(得分:1)

检查PhotoGaffe应用程序.. 它可在Google代码here上找到 它允许用户在3x3,4x4,5x5和6x6谜题之间进行选择。

这可以帮助您完成任务。

答案 1 :(得分:0)

直接从我正在做的事情开始!

    Bitmap main = BitmapFactory.decodeResource(getResources(), R.drawable.puzzle);

    if( main.getHeight() > main.getWidth() ){
        rescalefactor =((float)screenHeight)/main.getHeight();}
    else {
        rescalefactor = ( (float)screenWidth)/main.getWidth();
    }

    main = Bitmap.createScaledBitmap(main,(int)(main.getWidth()*rescalefactor),(int)(main.getHeight()*rescalefactor), false);

    Bitmap cropped;

    LinearLayout layout[] = new LinearLayout[rows];

    int x=0,y=0,i=0,j=0,width=main.getWidth()/column,height=main.getHeight()/rows;

    int count = 1;

    for(i=0;i<rows;++i)
    {
        layout[i] = new LinearLayout(this);

        for(j=0;j<column;++j)
        {
            cropped = Bitmap.createBitmap(main,x,y,width,height);
            image[i][j] = new Tile(this);
            image[i][j].setImageBitmap(cropped);
            image[i][j].row =i;image[i][j].column =j;
            image[i][j].setPadding(1, 1, 1, 1);
            image[i][j].setOnClickListener(this);
            image[i][j].setDrawingCacheEnabled(true);
            image[i][j].setId(count); count++;
            layout[i].addView(image[i][j]);
            x += width;
        }

        x = 0; y += height;
        root.addView(layout[i]);
    }

这是工作真正完成的路线:

cropped = Bitmap.createBitmap(main,x,y,width,height);

Tile类非常简单。只是一个包含行和列字段的扩展ImageView:

public class Tile extends ImageView {

    public int row, column;
    public Tile(Context context)
    {  super(context);}
}