私は教科書に従っていますが、特定のポイントで立ち往生しています。
これはコンソール アプリケーションです。
画像回転メソッドを持つ次のクラスがあります。
public class Rotate {
public ColorImage rotateImage(ColorImage theImage) {
int height = theImage.getHeight();
int width = theImage.getWidth();
//having to create new obj instance to aid with rotation
ColorImage rotImage = new ColorImage(height, width);
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
Color pix = theImage.getPixel(x, y);
rotImage.setPixel(height - y - 1, x, pix);
}
}
//I want this to return theImage ideally so I can keep its state
return rotImage;
}
}
回転は機能しますが、新しい ColorImage (以下のクラス) を作成する必要があります。これは、新しいオブジェクト インスタンス (rotImage) を作成し、渡したオブジェクト (theImage) の状態を失うことを意味します。現在、ColorImage にはあまり格納されていないため、大したことではありませんが、たとえば、適用された回転数や何かのリストの状態を格納したい場合は、それらすべてを失います。
以下のクラスは教科書からです。
public class ColorImage extends BufferedImage {
public ColorImage(BufferedImage image) {
super(image.getWidth(), image.getHeight(), TYPE_INT_RGB);
int width = image.getWidth();
int height = image.getHeight();
for (int y = 0; y < height; y++)
for (int x = 0; x < width; x++)
setRGB(x, y, image.getRGB(x, y));
}
public ColorImage(int width, int height) {
super(width, height, TYPE_INT_RGB);
}
public void setPixel(int x, int y, Color col) {
int pixel = col.getRGB();
setRGB(x, y, pixel);
}
public Color getPixel(int x, int y) {
int pixel = getRGB(x, y);
return new Color(pixel);
}
}
私の質問は、渡した画像をどのように回転させて、その状態を維持できるかということです。