2014-10-02 3 views
1

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

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 пикселя, по крайней мере, для некоторых пикселей. – raptortech97

ответ

1

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

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