测试一下项目上传系统。
效果如下(受图片大小限制被迫糊成一团):
该项目仅供参考,正确写法是使用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();
- }