2016-04-03 14 views
0

Ich muss die ursprüngliche Instanzvariable private in[][] pixels; um das Doppelte der Breite zu bearbeiten, habe ich den Algorithmus, um das Bild zu spiegeln und ein neues Array doppelt so breit I machen weiß einfach nicht, wie man die ursprünglichen int[][] Pixel darauf setzt. Das Pixel-Array muss das modifizierte sein, es kann nicht unter einem anderen Namen gehen.Edit 2D-Array-Instanz variabler Größe ohne Array-Liste (Bildbearbeitung)

private int[][] pixels; 
    ... 

    if(transformationName == "Mirror"){ 

     int[][] mirrorTemp = new int[height][width*2]; 

     for(int h = 0; h < height; h++){ 

      for(int w = 0; w < width; w++){ 

       mirrorTemp[h][w] = pixels[h][w]; 
       mirrorTemp[h][w + width] = pixels[h][width - h - 1]; 
      } 
     } 

     int[][] pixels = new int[height][width*2]; 

     for(int h = 0; h < height; h++){ 

      for(int w = 0; w < (width*2); w++){ 

       pixels[h][w] = mirrorTemp[h][w]; 
      } 
     } 
    } 

Antwort

0

Zuerst glaube ich, das Folgende ist, was Sie vorhatten zu tun.

for(int h = 0; h < height; h++){ 
     for(int w = 0; w < width; w++){ 
      mirrorTemp[h][w] = pixels[h][w]; 
      mirrorTemp[h][w + width] = pixels[h][width - w]; 
     } 
    } 

Danach können Sie einfach

pixels = mirrorTemp; 

, da die beiden sind beide int[][] Typ.

Hoffe, das hilft.

Verwandte Themen