Ошибка Pixel Replication - PullRequest
       3

Ошибка Pixel Replication

0 голосов
/ 03 апреля 2011

Мое старое изображение копируется до середины нового изображения

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;
}

1 Ответ

2 голосов
/ 03 апреля 2011

Вы упускаете фактор два, так как ширина нового изображения в два раза больше старого:

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)];
    }
}
...