хранение растрового изображения в массиве целых чисел - PullRequest
0 голосов
/ 22 июня 2011

каков наилучший способ сделать это. у меня есть массив высоты * ширина в длину. я просто перебираю битовый массив, устанавливая каждый пиксель в массив на основе индекса цикла? спасибо

[обновление] Это приложение, которое помещает искажение «рыбий глаз» в растровое изображение. я пытаюсь сохранить данные пикселей в массиве, в противоположность вызову Bitmap.setPixel (), так как это связано с большими издержками GC

 for (int j=0;j<dst.getHeight();j++) {
        for (int i=0;i<dst.getWidth();i++) {
            origPixel= input.getPixel(i,j);
            getRadXStart = System.currentTimeMillis();
            float x = getRadialX((float)j,(float)i,centerX,centerY,k);
            float y = getRadialY((float)j,(float)i,centerX,centerY,k);
            sampleImage(input,x,y);

            color = ((s[1]&0x0ff)<<16)|((s[2]&0x0ff)<<8)|(s[3]&0x0ff);
        //  System.out.print(i+" "+j+" \\");

            //if( Math.sqrt( Math.pow(i - centerX, 2) + ( Math.pow(j - centerY, 2) ) ) <= 150 ){
            if (Math.pow(i - centerX, 2) + ( Math.pow(j - centerY, 2) ) <= 22500 ) {
                // dst.setPixel(i, j, color);
                arr[i]=color;
            } else {
                //dst.setPixel(i,j,origPixel);
                arr[i]=origPixel;
            }
        }
    }

Bitmap dst2 = Bitmap.createBitmap(arr,width,height,input.getConfig());
        return dst2;

Ответы [ 2 ]

0 голосов
/ 22 июня 2011

Чтобы заполнить его, вам придется пройтись по битовой карте, чтобы установить каждый пиксель. Тем не менее, я не знаю, увидите ли вы значительное увеличение производительности.

0 голосов
/ 22 июня 2011
...