Вы упускаете фактор два, так как ширина нового изображения в два раза больше старого:
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)];
}
}