2015-11-24 2 views
1

Итак, у меня есть изображение, и мне нужно разбить его на 4 меньших изображения.Java - Разделение изображения на 4 изображения

Все, что я получил прямо сейчас, это то, что изображения печатаются в верхнем левом углу, но мне нужно напечатать в правом верхнем углу, внизу слева и внизу справа.

У меня есть два цикла, которые проходят через каждый пиксель изображений.

Это код, который выводит только верхний левый.

setRGB(x/2,y/2,everypixel) 

«everypixel» - это всего лишь пиксели на изображении.

Это будет напечатать только левый верхний, но как распечатать его для каждого другого угла.

Спасибо.

EDIT:

This is basically what I want. The original to the n = 4 (Ignore the n=2)

Вот почему я в основном хочу сделать с моим изображением ^^

+0

Я не уверен, что понял вопрос. Вы хотите вырезать одно изображение размером X-Y-Y на четыре изображения размером X/2-на-Y/2? – Prasanna

+0

Да, в общем, как целое изображение (x на y) на 4 меньших изображения всего изображения со всем изображением (x на y). Я надеюсь в этом есть смысл. –

+0

Я добавил изображение того, чего хочу, в обычном посте. –

ответ

2

Вы должны начать сворачивание исходного изображения до 1/4 размера (см this StackOverflow answer подробности - используйте at.scale(0.5, 0.5) вместо 2.0,2.0).

Затем цикл по й и у размеров уменьшенных изображений и в ваших «угол» изображения и 4 раза вы установили пиксель с й и у смещений:

for (int x = 0; x < scaledImageWidth; x++) { 
    for (int y = 0; y < scaledImageHeight; y++) { 
      imageTL.setRGB (x, y, scaledImagePixels[x][y]); 
      imageTR.setRGB (x + scaledImageWidth, y, scaledImagePixels[x][y]); 
      imageBL.setRGB (x, y + scaledImageHeight, scaledImagePixels[x][y]); 
      imageBR.setRGB (x + scaledImageWidth, y + scaledImageHeight, scaledImagePixels[x][y]); 
    } 
} 

Обратите внимание, что scaledImageWidth должен ваша исходная ширина изображения делится на 2, а scaledImageHeight должна быть вашей исходной высоты изображения, деленной на 2.

+0

Огромное вам спасибо, я понял, это было чем-то отличным от вашего решения, но это помогло мне. Спасибо, очень признательны. –

1

Предполагая, что у вас есть двумерный массив, каждый пиксель имеет значение цвета пикселя для каждого пикселя в исходном изображении и maxX и maxY as размеры или исходное изображение, следуя скелетному коду, должны идеально выполнять задание:

// Top-Left sub-image (imageTL) 
for (int x = 0; x < maxX/2; x++) { 
    for (int y = 0; y < maxY/2; y++) { 
      imageTL.setRGB (x, y, everypixel[x][y]); 
    } 
} 

// Top-Right sub-image (imageTR) 
for (int x = maxX/2; x < maxX; x++) { 
    for (int y = 0; y < maxY/2; y++) { 
      imageTR.setRGB (x - maxX/2, y, everypixel[x][y]); 
    } 
} 

// Bottom-Left sub-image (imageBL) 
for (int x = 0; x < maxX/2; x++) { 
    for (int y = maxY/2; y < maxY; y++) { 
      imageBL.setRGB (x, y - maxY/2, everypixel[x][y]); 
    } 
} 

// Botton-Right sub-image (image BR) 
for (int x = maxX/2; x < maxX; x++) { 
    for (int y = maxY/2; y < maxY; y++) { 
      imageBR.setRGB (x - maxX/2, y - maxY/2, everypixel[x][y]); 
    } 
} 
+0

Я тестировал его, но это просто печатает верхний левый угол исходного изображения. Я хочу исходное изображение, но в четырех разных углах. –

+0

Вы хотите сжать исходное изображение до размера 1/4? –

+0

Я добавил изображение на обычный пост, проверьте это, это в основном то, что я хочу. –

Смежные вопросы