5

2D 整数配列 (subSrc) をビットマップに変換する必要があります。解決策はありますか?

    private Bitmap decimation(Bitmap src){
     Bitmap dest = Bitmap.createBitmap(
       src.getWidth(), src.getHeight(), src.getConfig());

     int bmWidth = src.getWidth();
     int bmHeight = src.getHeight();`enter code here`

int[][] subSrc = new int[bmWidth/2][bmWidth/2];
       for(int k = 0; k < bmWidth-2; k++){
        for(int l = 0; l < bmHeight-2; l++){
         subSrc[k][l] = src.getPixel(2*k, 2*l); <---- ??
4

3 に答える 3

0

setPixel (int, int, int)またはsetPixel (int[] ピクセル、int オフセット、int ストライド、int x、int y、int 幅、int 高さ)メソッド od ビットマップ クラスを使用できます。

     Bitmap dest = Bitmap.createBitmap(
       src.getWidth()/2, src.getHeight()/2, src.getConfig());

     int bmWidth = src.getWidth();
     int bmHeight = src.getHeight();


       for(int k = 0; k < bmWidth/2; k++){
        for(int l = 0; l < bmHeight/2; l++){
         dest.setPixel(k,l,src.getPixel(2*k, 2*l));

しかし、これは遅くなると思います。

2番目の方法では、このようなことをしなければなりません

int subSrc = new int[(bmWidth/2*)(bmHeight/2)];
       for(int k = 0; k < bmWidth-2; k++){
         subSrc[k] = src.getPixel(2*(k/bmWidth), 2*(k%bmHeight)); <---- ??
于 2012-09-05T03:57:47.143 に答える
0

つまり、基本的にピクセルを取り出して何かを行い、結果としてビットマップを作成しようとしていますか?

ルーチンは、ピクセルが 1 次元配列にあることを想定しているため、次のように配列に配置する必要があります。

int data[] = new int[size]; 
data[x + width*y] = pixel(x,y);
...

次に、1 次元配列を受け入れる Bitmap.createBitmap() を使用します。常に ARGB 形式で色を返す b.getPixel(x,y) を使用しているため、例では ARGB の Bitmap.Config を使用する必要があります。

Bitmap result = Bitmap.createBitmap(data, width, height, Bitmap.Config.ARGB_8888);
于 2012-09-05T04:00:02.890 に答える