测试一下项目上传系统。
效果如下(受图片大小限制被迫糊成一团):
该项目仅供参考,正确写法是使用getbuff而不是一堆putpixel和getpixel。
#include <graphics.h> PIMAGE glass(PIMAGE t){ //创建增量数组 int ax[]={-1,0,1,-1,1,-1,0,1}; int ay[]={-1,-1,-1,0,0,1,1,1}; PIMAGE f=newimage(getwidth(t),getheight(t));//创建储存边缘的对象 PIMAGE ft=newimage(getwidth(t)-2,getheight(t)-2);//创建储存中部图像的对象 color_t c; int r; int xt,yt; f=t;//此处我们不取出边缘所有的点,而是直接克隆 //随机取点 for(int y=1;y<getheight(t)-1;y++){ for(int x=1;x<getwidth(t)-1;x++){ r=random(8); xt=x+ax[r]; yt=y+ay[r]; c=getpixel(xt,yt,t); putpixel(x-1,y-1,c,ft); } } putimage(f,2,2,ft);//将处理好的中部图像直接盖在f上,f的中部被ft覆盖,故f中只剩下未处理的边缘和处理好的中部 delimage(ft); return f; } int main(){ initgraph(500,500,0); PIMAGE t=newimage(); PIMAGE f=newimage(); getimage(t,"Image.png"); initgraph(getwidth(t),getheight(t)); setcaption("毛玻璃滤镜效果"); getimage(f,t,getwidth(t)/2,0,getwidth(t),getheight(t)); imagefilter_blurring(f,0xFF,0x100,0,0,0,0);//处理前先将图片模糊 for(int i=0;i<3;i++) f=glass(f); putimage(t,getwidth(t)/2,0,f); putimage(0,0,t); saveimage(t,"hfile.jpg"); getch(); }