java 图像的放大与缩小

阅读前请看<前言>,谢谢!

图像的放大,需要补充没有的像素,常用的方法有

1.最临近点插值算法(Nearest Neighbor)

2.双线性插值算法(Bilinear Interpolation)

3.双立方插值算法(Bicubic Interpolation)

等等,详细介绍请看(图像放大算法

现在给出用最临近点插值方法将图像放大两倍的代码

public void Todouble(){
		int[] doubleData = new int[2*w*2*h];
		for (int y = 0; y < h; y++) {
            for (int x = 0; x < w; x++) {
            	doubleData[2*x + 2*y *2* w] = data[x + y * w];
            }
		}
		
		this.h = 2*h;
		this.w = 2*w;
		for (int y = 0; y < h; y++) {
            for (int x = 0; x < w; x++) {
            	if(y%2 == 1)
            		doubleData[x + y*w] = doubleData[x + (y-1)*w];
            	if(x%2 == 1)
            		doubleData[x + y*w] = doubleData[x-1 + y*w];
            }
		}
		this.data = doubleData;
		
	}
效果如下:
java 图像的放大与缩小_第1张图片java 图像的放大与缩小_第2张图片


缩小就比较简单,缩小就是去掉一些像素点。

缩小的代码:

public void reduce(int a){//a是缩小的倍数
		int nw = w/a;
		int nh = h/a;
		int[] d = new int[nw*nh];
		
		for (int y = 0; y < nh; y++) {
                  for (int x = 0; x < nw; x++) {
            	   d[x + y*nw] = data[a*x + a*y * w];
                  }
		}
		this.h = nh;
		this.w = nw;
		this.data = d;
	}
运行效果如下:

java 图像的放大与缩小_第3张图片


你可能感兴趣的:(java图像处理基础,java,图像处理基础与图像特效)