大题思路我在知乎有回答
在这里大概讲下代码。我实现的比较粗糙,只能使用正方形的图片,如有其他需要可以自行改动。
下面是主要代码。
这里面有俩自定义的类,VectorParser(实现AimParser接口,用于像素替代算法的实现,其中parse()函数输入原料图片的rgb数组和目标图片对象,返回一个二维数组,其中每个数代表一个原料图片在其数组中的索引,将用该图片替换相应像素)和DefaultSamping(实现PicSampling接口,返回采样后的图片对象,我只是简单的用默认的采样方法改变了图片大小,大家可以根据需要修改)
public class ImageStitch {
public static int len = 25;
BufferedImage aim = null;
BufferedImage work = null;
BufferedImage srcsOld[] = null;
BufferedImage srcs[] = null;
int rgbs[][] = null;
int aimOfSrc[][];
int numSrc = 0;
public ImageStitch(File aim, File[] srcs) throws IOException {
//原料图片个数
numSrc = srcs.length;
// 初始化插值后原料图片数组
this.srcs = new BufferedImage[numSrc];
//初始化原料图片的数组
srcsOld = new BufferedImage[numSrc];
//初始化图