在处理好各种滤镜效果之后,还有一个问题,就是绘制比较慢,所以我们要做提速处理。
我们之前绘制之所以比较慢,是因为我们每存储一个像素点,就会先把它绘制出来;
那我们提速处理的思路,就是先把所有的像素点都存储起来,再统一绘制。
这里有两种情况:
(1).如果不绘制特殊形状,可以考虑直接设置RGB的值
//原图
public void drawImage_01(int[][] imgarr, Graphics g) {
BufferedImage img = new BufferedImage(imgarr.length, imgarr[0].length, BufferedImage.TYPE_INT_ARGB);
//如果不绘制特殊形状,可以考虑直接设置RGB值
for (int i = 0; i < imgarr.length; i++) {
for (int j = 0; j < imgarr[i].length; j++) {
int rgb = imgarr[i][j];
// 把所有的RGB遍历存入BufferedImage中
img.setRGB(i, j, rgb);
}
}
//一次性绘制这张照片
g.drawImage(img, X, Y, null);
}
(2).如果绘制特殊形状,可以通过获取缓冲图的Graphics,在缓冲图上绘制
//马赛克
public void