0

正方形サイズのタイル バッファで画像バッファをタイル化する際に問題があります。私が間違っていることを教えてください。

アイデアは、いくつかの条件で定義済みの正方形のタイル バッファーで満たされたイメージ バッファーを取得することです。出力画像バッファがタイルで適切に耕されるように、画像は長方形(正方形ではない)になる可能性があることに注意してください

ありがとうございました。

私はこれを試しました。

static int imgwidth = 150; static int imgheight=100;
    static int gl_fxf = 4;//4*n
    byte[] img_byte8rgbbuff = new byte[imgwidth*imgheight*3];// variable size
    byte[] tile_byte8rgbbuff = new byte[gl_fxf * gl_fxf * 3];// can be of any size 4nX4n

    public byte[] fillwithtile(byte[] in_Image, byte[] Tile)

    {
        byte[] img_byte8rgbbuff_OUT = new byte[in_Image.Length];


        int someMainIndex;


        Action<int, int, int> TFfxMethod = (int a_h, int b_w, int in_indx) =>
        {

            int t_indx;
            //int t_indx2;

            int counter = 0;

            for (int j = a_h; j < a_h + gl_fxf; j++)
                for (int i = b_w; i < b_w + gl_fxf; i++)
                {
                    t_indx = j * 3 * imgwidth + i * 3;
                    // SOMETHING WRONG IN INDEX CALCULATION FOR ARRAYS
                    if (in_Image[in_indx] == 255)// EX. some condition in_Image[in_indx] == 255 RED component
                    {
                        img_byte8rgbbuff_OUT[t_indx] = Tile[counter];
                        img_byte8rgbbuff_OUT[t_indx+1] = Tile[counter+1];
                        img_byte8rgbbuff_OUT[t_indx+2] = Tile[counter+2];

                    }
                    counter = counter + 1;
                }

        };


        for (int palboxH = 0; palboxH <= imgheight; palboxH = palboxH + gl_fxf)
            for (int palboxW = 0; palboxW <= imgwidth; palboxW = palboxW + gl_fxf)
            {

                someMainIndex = palboxH * 3 * gl_fxf * imgwidth + palboxW * 3 * gl_fxf;

                TFfxMethod(palboxH, palboxW, someMainIndex);


            }
return img_byte8rgbbuff_OUT;

    }// 
4

1 に答える 1

0

自分で考え出した

カウンターはコードに従う必要があり、in_indx は必要ありません

 counter = counter +3;
于 2013-07-11T06:03:54.207 に答える