滤镜之变形Distort特效
一些扭曲Distort特效也在滤镜中比较常见,而且如果在视频拍摄的时候使用则一般会比较有趣,如在Mac电脑上的PhotoBooth软件拍摄就有很多变形的Effect。这里介绍几种特效包括有:挤压(pinch)、球面特效(Spherize)、漩涡(Swirl)、波浪(Wave)等,这几个特效在PhotoSprite软件中都有代码。其他的一些变形也可以根据公式写出来,写出自己独特的一些变形特效出来。
这些特效都是对像素的位置进行改变,而不改变像素值,利用一些数学上的变换公式来进行。
原图:
l 挤压效果
代码:
// 弧度、半径double radian, radius;for (int y = 0; y < height; y++){for (int x = 0; x < width; x++){// 当前点与图像中心点的偏移量offsetX = x - midX;offsetY = y - midY;// 弧度radian = Math.Atan2(offsetY, offsetX);// 半径radius = Math.Sqrt(offsetX * offsetX + offsetY * offsetY);radius = Math.Sqrt(radius) * degree;// 映射实际像素点X = (int)(radius * Math.Cos(radian)) + midX;Y = (int)(radius * Math.Sin(radian)) + midY;// 边界约束if (X < 0) X = 0;if (X >= width) X = width - 1;if (Y < 0) Y = 0;if (Y >= height) Y = height - 1;src = (byte*)srcScan0 + Y * stride + X * BPP;dst[3] = src[3]; // Adst[2] = src[2]; // Rdst[1] = src[1]; // Gdst[0] = src[0]; // Bdst += BPP;} // xdst += offset;} // y}
l 球面效果
![](/assets/blank.gif)
// 弧度、半径double radian, radius;int midX = width / 2;
int midY = height / 2;
// Max(midX, midY)
double maxMidXY = (midX > midY ? midX : midY);for (int y = 0; y < height; y++){for (int x = 0; x < width; x++){// 当前点与图像中心点的偏移量offsetX = x - midX;offsetY = y - midY;// 弧度radian = Math.Atan2(offsetY, offsetX);// 注意,这里并非实际半径radius = (offsetX * offsetX + offsetY * offsetY) / maxMidXY;// 映射实际像素点X = (int)(radius * Math.Cos(radian)) + midX;Y = (int)(radius * Math.Sin(radian)) + midY;// 边界约束if (X < 0) X = 0;if (X >= width) X = width - 1;if (Y < 0) Y = 0;if (Y >= height) Y = height - 1;src = (byte*)srcScan0 + Y * stride + X * BPP;dst[3] = src[3]; // Adst[2] = src[2]; // Rdst[1] = src[1]; // Gdst[0] = src[0]; // Bdst += BPP;} // xdst += offset;} // y}
l 漩涡效果
代码:
// 弧度、半径double radian, radius;for (int y = 0; y < height; y++){for (int x = 0; x < width; x++){// 当前点与图像中心点的偏移量offsetX = x - midX;offsetY = y - midY;// 弧度radian = Math.Atan2(offsetY, offsetX);// 半径,即两点间的距离radius = Math.Sqrt(offsetX * offsetX + offsetY * offsetY);// 映射实际像素点X = (int)(radius * Math.Cos(radian + swirlDegree * radius)) + midX;Y = (int)(radius * Math.Sin(radian + swirlDegree * radius)) + midY;// 边界约束if (X < 0) X = 0;if (X >= width) X = width - 1;if (Y < 0) Y = 0;if (Y >= height) Y = height - 1;src = (byte*)srcScan0 + Y * stride + X * BPP;dst[3] = src[3]; // Adst[2] = src[2]; // Rdst[1] = src[1]; // Gdst[0] = src[0]; // Bdst += BPP;} // xdst += offset;} // y}
l 波浪效果
![](/assets/blank.gif)
double PI2 = Math.PI * 2.0;for (int y = 0; y < height; y++){for (int x = 0; x < width; x++){X = (int)(degree * Math.Sin(PI2 * y / 128.0)) + x;Y = (int)(degree * Math.Cos(PI2 * x / 128.0)) + y;// 边界约束if (X < 0) X = 0;if (X >= width) X = width - 1;if (Y < 0) Y = 0;if (Y >= height) Y = height - 1;src = (byte*)srcScan0 + Y * stride + X * BPP;dst[3] = src[3]; // Adst[2] = src[2]; // Rdst[1] = src[1]; // Gdst[0] = src[0]; // Bdst += BPP;} // xdst += offset;} // y}
滤镜之变形Distort特效相关推荐
- html文字变成汉堡插件,一组超酷汉堡包图标变形动画特效
Hamburgers是一款效果超酷的汉堡包图标变形动画特效CSS3动画库.这组汉堡包图标动画包括18种不同的汉堡包变形动画效果,你还可以通过Sass文件来自定义你自己的汉堡包图标变形动画. 安装 你可 ...
- jquery回弹_创意网页DOM元素拖拽弹性反弹和变形动画特效
这是一款非常有创意的HTML网页DOM元素拖拽弹性反弹和变形动画特效.这个特效中有两种效果:第一种是弹性模态窗口效果,第二种是弹性幻灯片效果.这两种效果均可以拖拽DOM元素,然后释放它们时生成非常震撼 ...
- 汉堡式折叠html,纯CSS3菜单汉堡包按钮变形动画特效
这是一款非常有趣的纯CSS3菜单汉堡包按钮变形动画特效.该特效共有9种不同的按钮变形动画效果,这些效果都是使用CSS3帧动画完成的,效果非常的酷. 制作方法 HTML结构 该按钮变形动画使用嵌套 的H ...
- 汉堡式折叠html,3种超酷汉堡包菜单按钮变形动画特效
这是一款使用CSS3和少量jQuery代码来完成的汉堡包菜单按钮变形动画特效.该特效使用CSS3 transition 和 transform 来完成变形动画效果,使用jQuery来触发按钮点击事件. ...
- html隐藏汉堡按钮,12种汉堡包图标按钮变形动画特效
插件描述:这是一款使用jquery和css3制作的炫酷汉堡包按钮变形动画特效.这组特效共12种动画效果,分别是在用户点击汉堡包按钮之后,汉堡包按钮以不同的方式执行变形动画. 图标按钮变形说明 这是一款 ...
- unity黑白滤镜_unity游戏相机滤镜渲染后期色彩处理特效着色器Colorful FX v4.4
unity游戏相机滤镜渲染后期色彩处理特效着色器Colorful FX v4.4,是一个可快速和自定义的后处理效果,颜色可调整. Colorful FX is a collection of high ...
- python 视频滤镜_Python实现PS滤镜功能之波浪特效示例
本文实例讲述了Python实现PS滤镜功能之波浪特效.分享给大家供大家参考,具体如下: 这里用 Python 实现 PS 滤镜的波浪特效,具体效果可以参考附录说明 import numpy as np ...
- html图标动画效果,html5 svg炫酷图标变形动画特效
这是一款效果非常炫酷的html5 svg炫酷图标变形动画特效.类似的效果有:html5 svg和css3超酷图标动画特效. 使用方法 1.添加一组SVG图标到你的HTML文件中. 2.通过调用new ...
- 巧用Photoshop滤镜打造星光灿烂特效背景(转)
巧用Photoshop滤镜打造星光灿烂特效背景(转)[@more@] 1.打开一张风景照片,把前景色设置为黑色: 2.执行"滤镜"|"风格化"|"照亮 ...
最新文章
- 电子工程师要学的课程有哪些?
- ML 02、监督学习
- 《卓有成效的程序员》读书笔记
- 高并发的epoll+线程池,epoll在线程池内
- 交换机端口安全如何部署
- Ubuntu18.04彻底删除MySQL数据库
- 抽屉效果_宜家靠边,好用不贵的全格收纳抽屉使用感受
- 教你玩转CSS 属性选择器
- objective-c 语法快速过(4)
- mac os 10.9 mysql_MAC OSX 10.9 apache php mysql 环境配置
- 自适应方案比较及案例
- python gif_Python-字符版gif图
- C3P0连接池的基本配置与使用
- 【嵌入式模块】LCD1602LCD12864
- 岩土工程颗粒流软件PFC6.0技巧——按计算时间导出数据、图像及保存文件
- STM32——滴答定时器设置1us问题
- HEVC帧内预测学习(一)CTU、CU、PU、TU单元划分的理解
- 如何选取 android 系统上的编译工具链
- STM32单片机(三).STM32单片机的开发方法
- webots和ros2笔记08-分封
热门文章
- Photoshop滤镜打造线框特效美术字(转)
- iOS开发直播需要的准备
- Java经典排序算法:选择排序,动图演示排序过程
- 139家企业入选前程无忧2021年度中国雇主榜;帝亚吉欧投资5亿于中国兴建碳中和威士忌酒厂 | 美通社头条...
- Java 数据库 课设 职工工资管理系(源代码)
- HTML+CSS简单实现京东顶部导航栏
- javaIO流之转换流
- 防患于未“燃”的智能水气表解决方案,你心动了吗?
- 乐视市值是360两倍说明啥:卖水模式终结 生态战开打
- 基于JAVA线上甜品店售卖系统计算机毕业设计源码+系统+lw文档+部署