首先看这两张效果图:

这个滤镜在ImageStone这个软件中有完整代码,现在改写如下:

#define PI 3.1415926535897932384626433832795struct Point
{float x;float y;
};void TileRefelctRGB(unsigned char* pInput,unsigned char* pOutput,int width,int height,int nStride,int nAngle,int nCount,int nSquareSize)
{float _sin,_cos,scale,curvature;int aasamples = 16;struct Point* aapt = (struct Point*)malloc(aasamples*sizeof(struct Point));float x,y;int i,j,k;float u,v,s,t;int xSample,ySample;float hw = width / 2.0;float hh = height / 2.0;int r,g,b,index;if(nAngle < -45)nAngle = -45;if(nAngle > 45)nAngle = 45;_sin = sin(nAngle*PI/180) ;_cos = cos(nAngle*PI/180) ;if(nSquareSize < 2)nSquareSize = 2;if(nSquareSize>200)nSquareSize = 200;scale = PI / (float)nSquareSize ;if (nCount < -20)nCount = -20 ;if(nCount > 20)nCount = 20;curvature = nCount * nCount / 10.0 * (abs(nCount)/nCount) ;for (i=0 ; i < aasamples ; i++){x = (i * 4) / (float)aasamples;y = i / (float)aasamples;x = x - (int)x ;aapt[i].x = _cos * x + _sin * y ;aapt[i].y = _cos * y - _sin * x ;}for (y=0;y<height;y++){for (x=0;x<width;x++){i = x - hw,j = y - hh ;r=g=b=0;for (k=0;k<aasamples;k++){u = i + aapt[k].x ;v = j - aapt[k].y ;s =  _cos * u + _sin * v ;t = -_sin * u + _cos * v ;s += curvature * tan(s * scale) ;t += curvature * tan(t * scale) ;u = _cos * s - _sin * t ;v = _sin * s + _cos * t ;xSample = (int)(hw + u) ;ySample = (int)(hh + v) ;if(xSample > width-1)xSample = width-1;if(xSample<0)xSample = 0;if(ySample>height-1)ySample = height-1;if(ySample<0)ySample = 0;index = xSample*3 + ySample*nStride;r += pInput[index];g += pInput[index+1];b += pInput[index+2];}index = x*3+y*nStride;pOutput[index] = r / aasamples;pOutput[index+1] = g / aasamples;pOutput[index+2] = b / aasamples;}}free(aapt);
}

该滤镜有三个参数:

1.     角度:控制方向

2.     大小:控制瓷砖大小

3.     数量:控制瓷砖中变形的像素数

具体的流程大家可以根据代码去理解,无非是像素点的scale,rotate以及offset等,assample来控制精度。

滤镜之瓷砖TileReflect相关推荐

  1. 自定义背景_新版快绘精选:自定义背景墙 | 吊顶 | 云渲染滤镜升级

    New自定义背景墙 没有合适的背景墙样板? 你需要一个全世界独一无二, 独属于你monent的背景墙? 没问题! 无论是要这样↓ 还是这样↓ 快绘都能帮到你! -- 请观看视频 -- New自定义吊顶 ...

  2. iOS绘图详解-多种绘图方式、裁剪、滤镜、移动、CTM

    iOS绘图详解 摘要: Core Graphics Framework是一套基于C的API框架,使用了Quartz作为绘图引擎.它提供了低级别.轻量级.高保真度的2D渲染.该框架可以用于基于路径的 绘 ...

  3. 利用SVG滤镜实现水波倒影效果

    SVG滤镜用来增加对SVG图形的特殊效果.多种滤镜巧妙结合起来可以实现很棒的视觉效果.下面利用svg的feTurbulence滤镜和feDisplacementMap来模拟真实的水波倒影特效.效果如下 ...

  4. 绘图与滤镜全面解析--Quartz 2D 、Core Image

    绘图与滤镜全面解析 概述 在iOS中可以很容易的开发出绚丽的界面效果,一方面得益于成功系统的设计,另一方面得益于它强大的开发框架.今天我们将围绕iOS中两大图形.图像绘图框架进行介绍:Quartz 2 ...

  5. ps2021神经ai滤镜无法使用,ps2021神经滤镜出现错误

    photoshop 滤镜的下载以及安装方法 photoshop本身就带有很多滤镜.需要自己安装的滤镜我们都叫做外挂滤镜.photoshop怎么安装滤镜要看你下载的滤镜是什么样子的了. 有的滤镜下载下来 ...

  6. iOS GPUImage研究序一:内置滤镜

    本片介绍关于GPUImage的125个内置过滤器:xoxo_x 著 本文参考:https://github.com/BradLarson/GPUImage#gpuimage 颜色调整 GPUImage ...

  7. |PS内置滤镜简介|

    [转自]http://68ps.5d6d.com/thread-3707-1-8.html 转至百度贴吧某无名高人........ 内容: "风格化" 风格化:通过替换像素或增加相 ...

  8. iOS---GPUImage研究:内置滤镜解析

    iOS GPUImage研究:内置滤镜解析. 颜色调整 GPUImageBrightnessFilter:调整图像的亮度 亮度:调整亮度(-1.0 - 1.0,默认为0.0) GPUImageExpo ...

  9. IOS 绘图 bitmap 滤镜 图片合成

    CGSize size = CGSizeMake(800, 800);UIGraphicsBeginImageContextWithOptions(size, NO, 1);//1.获取bitmap上 ...

  10. php imagick 滤镜,PHP中imagick函数的中文解释

    imagick的:: adaptiveBlurImage - 增加了自适应模糊滤镜图像 imagick的:: adaptiveResizeImage - 自适应调整图像数据依赖三角 imagick的: ...

最新文章

  1. 分类器评价与在R中的实现:混淆矩阵
  2. c/c++格式化字符串的标识
  3. [leveldb] 3.put/delete操作
  4. 一个程序员必须学会的Github使用技巧
  5. c语言subscripted_c语言。数组的问题。急!
  6. 使用 Drone 构建 Coding 项目
  7. matlab的7.3版本是什么_MX Linux 19.3 发布,Debian和antiX Linux的混合版本
  8. springboot项目启动rabbitmq报错org.springframework.amqp.AmqpIOException: java.io.IOException
  9. webservice python开发接口_基于Python的Webservice开发(四)-泛微OA的SOAP接口
  10. IE浏览器下常见的CSS兼容问题
  11. java检测栈溢出_java运行方法栈溢出
  12. vim 全局替换_VIM学习笔记 Ex模式 (Ex Mode)
  13. 开篇词 | 程序员的成长课
  14. 使用PIL剪切图片和拼接图片
  15. bzoj 1491: [NOI2007]社交网络
  16. 阿里云HaaS100物联网开发板学习笔记(二)硬件控制初步--让小灯闪烁起来
  17. EXP4恶意代码分析 20154306 刘宇轩
  18. android 6.0 电池曲线,Android6.0 RK3399 电池系统(一)BQ25700 IC 驱动分析 · Younix’s Studio...
  19. 英文论文写作常用词汇及句型
  20. 在你朋友面前伪装黑客2(程序代码)

热门文章

  1. windows批处理for循环的坑
  2. 如何测量三角形的斜边长度?
  3. libfetion的使用
  4. Data URL 基本介绍
  5. Microsoft Virtual PC 2007 SP1简体中文语言包
  6. 报童问题求解最大利润_选对方法,速解行测最大利润问题
  7. 计算机故障报警声2声,电脑开机报警声音2短4短是什么問題?
  8. 手把手教会你 | 多用户-服务器聊天室应用软件开发
  9. 易语言取DOS执行结果
  10. 2022爱分析·虚拟化活动实践报告