2016-12-05 9 views
0

今は長い間苦労しています。イメージの特定のピクセルでアルファチャンネルを変更しようとしています。私はアルファチャンネルだけで2D配列に画像を変換したい。私はこれをAndroidで動作させていますが、UWPの仕組みは分かりません。UWP - uwp内の特定のピクセルのアルファを変更する

Androidのバージョン

short[][] dotMapArray; 
short[][] heatMapArray; 
int[] scolorGradiant; 

void init() { 
    Bitmap dotBitmap = loadImageFromResources(DOT); 
    Bitmap gradiantBitmap = loadImageFromResources(SPECTRUMPIC); 

    // initializing the 'dot' for the points on the heatmap 
    dotMapArray = new short[dotBitmap.getWidth()][dotBitmap.getHeight()]; 
    print(true, "Converting Dot image to black image"); 
    for (int x = 0; x < dotBitmap.getWidth(); x++) { 
     for (int y = 0; y < dotBitmap.getHeight(); y++) { 
      dotMapArray[x][y] = (short) (Color.alpha(dotBitmap.getPixel(x, y))); 
      if (dotMapArray[x][y] > 255) 
       dotMapArray[x][y] = 255; 
     } 
    } 
    // initializing the color gradiant 
    scolorGradiant = new int[gradiantBitmap.getHeight()]; 
    int gradiant, pixelColor; 
    for (int y = 0; y < scolorGradiant.length; y++) { 
     gradiant = gradiantBitmap.getPixel(0, y); // color 
     pixelColor = Color.argb(90, Color.red(gradiant), Color.green(gradiant), Color.blue(gradiant)); 
     scolorGradiant[y] = pixelColor; 
    } 

} 

私はUWPでこれをどのように行うのですか? 誰かが私を助けることができますか?

答えて

1

ここで青= 255は、すべてのチャネルが0

 var pixels = yourWriteableBitmap.PixelBuffer.ToArray(); 
     for (int i = 0; i < pixels.Length; i += 4) 
     { 
      if (pixels[i] == 255) 
      { 
       pixels[i] = 0; 
       pixels[i + 1] = 0; 
       pixels[i + 2] = 0; 
       pixels[i + 3] = 0; 
      } 
     } 
     using (var stream = yourWriteableBitmap.PixelBuffer.AsStream()) 
     { 
      await stream.WriteAsync(pixels, 0, pixels.Length); 
     } 
に行けば第一チャンネル(BGRA)をチェックループです
関連する問題