Масштабирование пиксельного массива в Java

1

Я возился с перераспределением массивов пикселей. Мне удалось сделать некоторый код, который масштабирует пиксели при их рендеринге. Проблема с кодом заключается в том, что я могу масштабировать пиксели только целыми числами (1, 2, 3 и т.д.). Я хочу иметь возможность масштабировать пиксели с помощью двойного (.001,.002 и т.д.), Поэтому я не ограничусь лишь несколькими размерами изображений. Вот код, который я написал:

public void draw(Sprite s, int xCord, int yCord, int scale){
    for(int y = 0; y < s.getHeight()*scale; y++){
        for(int x = 0; x <s.getWidth()*scale; x++){
            pixels[(x+xCord) +(y+yCord)*this.width]
                = s.pixels[(x/scale+ y/scale * s.getWidth())];
        }       
    }
}

Может ли это быть легко изменено, чтобы обеспечить нецелое числовое число?

Класс Sprite знает свою собственную ширину и высоту, заданные s.getWidth() и s.getHeight(). Высота и ширина - это фактические размеры в пикселях.png, когда они были прочитаны.

  • 0
    Не очень легко, нет, и вы получите размытые результаты. Если вы все равно хотите идти вперед, подумайте о том, чтобы иметь сетку цветов, накладывающую более мелкую сетку, и смотреть на результаты этой более тонкой сетки. Вы должны будете взять средневзвешенное значение 2 или 4 пикселя, по крайней мере, для некоторых пикселей.
Теги:
arrays
graphics
pixel
scale

1 ответ

1
Лучший ответ

Для гибкости при выборе алгоритма передискретизации используйте AffineTransformOp, как показано здесь, или просто позвольте графическому контексту обрабатывать его, как показано здесь.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню