Image 像素复制错误

Image 像素复制错误,image,image-processing,Image,Image Processing,我的旧图像被复制到新图像的中间 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.wid

我的旧图像被复制到新图像的中间

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;
}
PImage toPixelReplication(PImage p)
{
PImage newImage=新PImage((p.宽度*2),(p.高度*2));
newImage.loadPixels();
对于(int i=0;i
由于新图像的宽度是旧图像的两倍,因此缺少系数2:

newImage.pixels[((2*j))*(2*p.width) + (i*2)]= p.pixels[(j)*p.width + i];
我还交换
I
j
,因为它们在像素计算中应该是相反的(
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)];
    }
}
for(int i=0;i<2*p.width;i++){
对于(int j=0;j<2*p.height;j++){
newImage.pixels[j*2*p.width+i]=p.pixels[(j/2)*p.width+(i/2)];
}
}

它可以工作,但我的图像正在创建一种带有黑色像素和原始图像像素的棋盘格图案