我的旧图像被复制到新图像的中间
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;
}
答案 0 :(得分:2)
由于新图像的宽度是旧图像宽度的两倍,因此缺少因子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)];
}
}