1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| public void extend(Image out, Image in, int toppadding, int leftpadding,
int rightpadding, int bottompadding) {
if (out.getNumComponents() != in.getNumComponents())
throw new IllegalArgumentException("BorderExtenderCopy::extend");
if (toppadding < 0 || leftpadding < 0 || rightpadding < 0
|| bottompadding < 0)
throw new IllegalArgumentException("BorderExtenderCopy::extend");
out.resize(in.getWidth() + leftpadding + rightpadding, in.getHeight()
+ bottompadding + toppadding);
for (int canal = 0; canal < out.getNumComponents(); canal++) {
/* coin haut gauche */
for (int j = 0; j < toppadding; j++)
for (int i = 0; i < leftpadding; i++)
out.setPixel(i, j, canal, in.getPixel(0, 0, canal));
/* ligne supérieur */
for (int j = 0; j < toppadding; j++)
for (int i = leftpadding; i < (in.getWidth() + leftpadding); i++)
out.setPixel(i, j, canal, in.getPixel(i - leftpadding, 0,
canal));
/* coin supérieur droite */
for (int j = 0; j < toppadding; j++)
for (int i = (in.getWidth() + leftpadding); i < out.getWidth(); i++)
out.setPixel(i, j, canal, in.getPixel(in.getWidth() - 1, 0,
canal));
/* ligne gauche */
for (int j = toppadding; j < (in.getHeight() + toppadding); j++)
for (int i = 0; i < leftpadding; i++)
out.setPixel(i, j, canal, in.getPixel(0, j - toppadding,
canal));
/* ligne droite */
for (int j = toppadding; j < (in.getHeight() + toppadding); j++)
for (int i = (in.getWidth() + leftpadding); i < out.getWidth(); i++)
out.setPixel(i, j, canal, in.getPixel(in.getWidth() - 1, j
- toppadding, canal));
/* coin bas gauche */
for (int j = (in.getHeight() + toppadding); j < out.getHeight(); j++)
for (int i = 0; i < leftpadding; i++)
out.setPixel(i, j, canal, in.getPixel(0,
in.getHeight() - 1, canal));
/* coin bas droit */
for (int j = (in.getHeight() + toppadding); j < out.getHeight(); j++)
for (int i = (in.getWidth() + leftpadding); i < out.getWidth(); i++)
out.setPixel(i, j, canal, in.getPixel(in.getWidth() - 1, in
.getHeight() - 1, canal));
/* ligne bas */
for (int j = (in.getHeight() + toppadding); j < out.getHeight(); j++)
for (int i = leftpadding; i < (in.getWidth() + leftpadding); i++)
out.setPixel(i, j, canal, in.getPixel(i - leftpadding, in
.getHeight() - 1, canal));
/* centre */
for (int j = toppadding; j < (in.getHeight() + toppadding); j++)
for (int i = leftpadding; i < (in.getWidth() + leftpadding); i++)
out.setPixel(i, j, canal, in.getPixel(i - leftpadding, j
- toppadding, canal));
}
} |
Partager