0

イメージをバイナリ形式に変換する単純な Android プロジェクトを構築しようとしていますが、ピクセル値を確認すると、ゼロしか得られません。どこに問題があるのか​​わからない。誰でも私を助けてください。これは私のコードです

iv = (ImageView) findViewById (R.id.uploadImage);

//convert the image view into bitmap
iv.buildDrawingCache();
bmap = iv.getDrawingCache();

int red;
int newPixel = 0;
int threshold =230;
int width = bmap.getWidth();
int hieght = bmap.getHeight();
int[] pix = new int[width * hieght];
int[] pix2 = new int[width * hieght];
int alpha = 0;

bmap.getPixels(pix, 0, width, 0, 0, width, hieght);

//convert the image into white and black
for (int i=0;i<width;i++) {  
  for (int j=0;j<hieght;j++) {
    int index = j * width + i;

    red = (pix[index] >> 16) & 0xff;
    alpha = (pix[index] >> 24) & 0xff;

    if (red<threshold) {
      newPixel = 0;
    } else {
      newPixel = 255;
    }
    newPixel = colorToRGB(alpha, newPixel, newPixel, newPixel);
    bmap.setPixel(i, j, newPixel);
    iv.setImageBitmap(bmap);     
  }
} 

//convert the black and white image view into bitmap                                    
bmap.getPixels(pix2, 0, bmap.getWidth(), 0, 0, bmap.getWidth(),bmap.getHeight());

StringBuilder builder = new StringBuilder();
for (int i :pix2) {
  builder.append("   " + i + "    ");
}
Toast.makeText(this, builder, Toast.LENGTH_LONG).show();

private static int colorToRGB (int alpha, int red, int green, int blue) {
  int newPixel = 0;
  newPixel += alpha;
  newPixel = newPixel << 8;
  newPixel += red; newPixel = newPixel << 8;
  newPixel += green; newPixel = newPixel << 8;
  newPixel += blue;
  return newPixel;
}

これはlogcatです

08-12 08:52:32.887: D/dalvikvm(774): GC_CONCURRENT は 71K を解放し、7% は 2765K/2964K を解放し、23ms+15ms を一時停止し、合計 94ms

08-12 08:52:33.497: D/gralloc_goldfish(774): GPU エミュレーションなしのエミュレーターが検出されました。

08-12 08:52:40.698: D/dalvikvm(774): GC_CONCURRENT 解放された 63K、6% 解放された 3087K/3272K、一時停止 73ms+3ms、合計 165ms

08-12 08:52:49.397: 私/Choreographer(774): 39 フレームスキップしました! アプリケーションがメイン スレッドで処理しすぎている可能性があります。

08-12 08:52:54.568: D/dalvikvm(774): GC_FOR_ALLOC は 9K を解放し、5% は 3124K/3272K を解放し、68ms を一時停止し、合計 81ms

08-12 08:52:54.617: I/dalvikvm-heap(774): ヒープ (frag ケース) を 6.166MB に拡張し、3145744 バイトの割り当てを行う

08-12 08:52:54.778: D/dalvikvm(774): GC_FOR_ALLOC は 40K を解放し、4% は 6155K/6348K を解放し、156ms を一時停止し、合計 156ms

08-12 08:52:55.008: D/dalvikvm(774): GC_CONCURRENT 解放 <1K、4% 解放 6155K/6348K、一時停止 80ms+38ms、合計 231ms

08-12 08:52:55.898: 私/Choreographer(774): 412 フレームをスキップしました! アプリケーションがメイン スレッドで処理しすぎている可能性があります。

08-12 08:52:57.898: D/dalvikvm(774): GC_FOR_ALLOC は 38K を解放し、6119K/6348K を 4% 解放し、28ms を一時停止し、合計 30ms

08-12 08:52:57.929: I/dalvikvm-heap(774): ヒープ (frag ケース) を 9.091MB に拡張し、3145744 バイトの割り当てを行う

08-12 08:52:58.058: D/dalvikvm(774): GC_CONCURRENT 解放 <1K、3% 解放 9191K/9424K、一時停止 82ms+6ms、合計 125ms

08-12 08:52:58.058: D/dalvikvm(774): WAIT_FOR_CONCURRENT_GC が 40 ミリ秒ブロックされました

08-12 08:52:58.089: I/dalvikvm-heap(774): ヒープ (frag ケース) を 12.090MB に拡張し、3145744 バイトの割り当てを行う

08-12 08:52:58.218: D/dalvikvm(774): GC_FOR_ALLOC 解放 <1K、2% 解放 12263K/12500K、一時停止 125ms、合計 126ms

08-12 08:52:58.288: D/dalvikvm(774): GC_CONCURRENT 解放 0K、2% 解放 12263K/12500K、一時停止 4ms+16ms、合計 70ms

08-12 08:56:37.707: E/Trace(886): トレース ファイルを開く際のエラー: そのようなファイルまたはディレクトリはありません (2) 08-12 08:56:38.518: D/dalvikvm(886): GC_CONCURRENT が 41K、6 を解放しました% フリー 2805K/2968K、一時停止 13ms+3ms、合計 77ms

08-12 08:56:38.518: D/dalvikvm(886): WAIT_FOR_CONCURRENT_GC が 10 ミリ秒ブロックされました

08-12 08:56:38.727: D/gralloc_goldfish(886): GPU エミュレーションなしのエミュレーターが検出されました。

08-12 08:56:55.107: D/dalvikvm(886): GC_FOR_ALLOC は 23K を解放し、5% は 3083K/3236K を解放し、69ms を一時停止し、合計 78ms

08-12 08:56:55.207: I/dalvikvm-heap(886): ヒープ (frag ケース) を 6.126MB に拡張し、3145744 バイトの割り当てを行う

08-12 08:56:55.367: D/dalvikvm(886): GC_FOR_ALLOC は 1K を解放し、3% は 6153K/6312K を解放し、156ms を一時停止し、合計 156ms

08-12 08:56:55.607: D/dalvikvm(886): GC_CONCURRENT が 4K を解放、6149K/6312K を 3% 解放、一時停止 80ms+32ms、合計 245ms

08-12 08:56:56.747: 私/Choreographer(886): 465 フレームスキップしました! アプリケーションがメイン スレッドで処理しすぎている可能性があります。

08-12 08:58:03.287: D/dalvikvm(936): GC_CONCURRENT 解放された 44K、6% 解放された 2805K/2972K、一時停止 15ms+3ms、合計 76ms

08-12 08:58:03.287: D/dalvikvm(936): WAIT_FOR_CONCURRENT_GC が 9 ミリ秒ブロックされました

08-12 08:58:03.637: D/gralloc_goldfish(936): GPU エミュレーションなしのエミュレーターが検出されました。

4

1 に答える 1