2011-04-03 47 views
0

我的舊圖像複製,直到新的圖像像素複製錯誤

PImage toPixelReplication(PImage p) 
{ 
PImage newImage = new PImage((p.width*2),(p.height*2)); 
newImage.loadPixels(); 
for(int i = 0; i < p.width; i++) 
{ 
    for(int j = 0; j < p.height; j++) 
    { 
    newImage.pixels[((2*i))*p.width + (j*2)]= p.pixels[(i)*p.width + j]; 
    } 
} 
newImage.updatePixels(); 
return newImage; 
} 

回答

2

你缺少一個係數2,因爲新圖像的寬度是舊兩次中間:

newImage.pixels[((2*j))*(2*p.width) + (i*2)]= p.pixels[(j)*p.width + i]; 

我也交換ij,因爲它們應該是像素計算中的其他方式(i表示列,j該行)。

注意:此方法只填充每第二行中的每第二個像素。如果你要填寫完整的圖像(每個像素的水平和垂直一倍),你可以使用以下行:

for(int i = 0; i < 2*p.width; i++) { 
    for(int j = 0; j < 2*p.height; j++) { 
     newImage.pixels[j*2*p.width + i]= p.pixels[(j/2)*p.width + (i/2)]; 
    } 
} 
+0

它的工作,但我的形象是建立某種與黑色像素方格圖案與原圖像像素 – 2011-04-03 18:34:27