问题描述
有时候展示粒子光斑
喜欢看到马赛克那种
类似热图的感觉
比如下面这样
但是这个粒子光斑位图只有15*15大小
如果在类似PPT或者其他作图软件里面
强行放大进行展示的时候
软件会自动给你插值做成下面这种效果
这并不是我们想要的。
解决方案
1. 打开一张粒子光斑像素图
2. 按照顺序读取每个像素的值并记录下来
3. 新建一张等比扩大n倍的图像
4. 按照顺序以n*n矩形填充对应像素
代码如下:
/*
* 将小像素图img,按比例扩充n倍
*/
function collect(width,height){
arr = newArray(width*height);
for(i=0;i<width;i++){
for(j=0;j<height;j++){
arr[i*height+j] = getPixel(i,j);
}
}
return arr;
}
function enlarge(img,n){
selectWindow(img);
width = getWidth();
height = getHeight();
newImage("enlarge_"+img, "RGB white", n*width, n*height,1);
enlarge_img = getTitle();
selectWindow(img);
origin_pixel = collect(width,height);
selectWindow(enlarge_img);
for(i=0;i<width;i++){
for(j=0;j<height;j++){
setColor(origin_pixel[i*height+j]);
fillRect(i*n,j*n,n,n);
}
}
}
ID = getTitle();
enlarge(ID,10);
最终效果
非常快速地,就把原来的粒子光斑图的像素扩充了10倍