Я следую учебнику и застрял в определенной точке.Повернуть BufferedImage
Это консольное приложение.
У меня есть следующий класс с методом циклического сдвига изображения:
public class Rotate {
public ColorImage rotateImage(ColorImage theImage) {
int height = theImage.getHeight();
int width = theImage.getWidth();
ColorImage rotImage = new ColorImage(height, width); //having to create new obj instance to aid with rotation
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);
}
}
return rotImage; //I want this to return theImage ideally so I can keep its state
}
}
вращение работает, но я должен создать новый 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);
}
}
Вопрос, как я могу повернуть изображение, которое я передаю, чтобы сохранить его состояние?
Вы действительно не можете без обертывания его в объект, как вы делаете или изобретаете свой собственный образ, или делаете что-то похожее на стенографию и скрываете информацию о состоянии в уже используемых форматах. – arynaq
@arynaq Я думаю, вы имеете в виду «стеганографию». – EJP
@EJP Я определенно делаю: D – arynaq