博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
图像滤镜艺术---Hudson滤镜(Instagram)
阅读量:5869 次
发布时间:2019-06-19

本文共 2564 字,大约阅读时间需要 8 分钟。

原文:

    今天给大家实现的是Instagram中的Hudson滤镜,为什么介绍Instagram滤镜,原因很简单,Instagram本身就是一个巨大的成功,迄今为止,没有哪个软件的滤镜效果可以超越它的。

    Hudson滤镜比较简单,主要是一个模板的寻找,这个模板,我也是在网上找到的,如果单单用PS去实现这个模板效果,我觉得我们是舍易取难,我们追求的是最后的效果,而不是过程呵呵。

    首先看下对比效果:

   

                                    (a) Instagram  Hudson效果

   

                                                 (b) PS效果图

    

                                                                    (c) C# 效果图

    按照原则,先介绍PS实现过程:

    1,打开原始图像以及模板图像,Instagram的目标效果图像:

其中,图层0为原始图像,图层1为模板图像(模板图像与psd文件一起,我都会放到包里供大家下载使用),另外的Hudson即Instagram中的效果图像。

    2,选中图层1,选择“叠加”图层混合模式,即得到效果图:

    然后,我们介绍C#实现:

    按照PS的过程,C#代码如下:

    

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Drawing;using System.Drawing.Imaging;namespace SpecialeffectDemo{    unsafe class HudsonFilter    {        public HudsonFilter(Bitmap src,Bitmap bg_a)        {            this.srcBitmap = src;            this.map = bg_a;        }        private Bitmap srcBitmap = null;        private Bitmap map = null;        public Bitmap Apply()        {            if (srcBitmap != null)            {                Bitmap src = new Bitmap(srcBitmap);                int w = srcBitmap.Width;                int h = srcBitmap.Height;                BitmapData srcData = src.LockBits(new Rectangle(0, 0, w, h), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);                BitmapData mapaData = map.LockBits(new Rectangle(0, 0, w, h), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);                byte* p = (byte*)srcData.Scan0;                byte* pa = (byte*)mapaData.Scan0;                int r = 0, g = 0, b = 0;                for (int j = 0; j < h; j++)                {                    for (int i = 0; i < w; i++)                    {                        b = p[0];                        g = p[1];                        r = p[2];                        b = SpecialEffectClass.ModeSuperpositionEffect(b, pa[0]);                        g = SpecialEffectClass.ModeSuperpositionEffect(g, pa[1]);                        r = SpecialEffectClass.ModeSuperpositionEffect(r, pa[2]);                        p[0] = (byte)b;                        p[1] = (byte)g;                        p[2] = (byte)r;                        p += 4;                        pa += 4;                    }                    p += srcData.Stride - w * 4;                    pa += mapaData.Stride - w * 4;                }                src.UnlockBits(srcData);                map.UnlockBits(mapaData);                return src;            }            else            {                return null;            }        }           }}

 

界面效果:

    最后给出代码和PS实现过程的包,免费下载地址

    以上就是Hudson这款滤镜的实现过程,希望大家喜欢,有什么问题可以给我留言或者邮件:

邮箱  QQ:1358009172

最后,分享一个专业的图像处理网站(微像素),里面有很多源代码下载:

你可能感兴趣的文章
nginx 集群介绍
查看>>
oracle分析函数Rank, Dense_rank, row_number
查看>>
一些坑
查看>>
工作随记2
查看>>
工厂方法模式
查看>>
享元模式
查看>>
推荐扔物线的HenCoder Android 开发进阶系列 后期接着更新
查看>>
Spring的scope="prototype"属性
查看>>
hibernate日常BUG总结
查看>>
linux数据库常用指令
查看>>
计算几何导论
查看>>
SQL2008无法连接到.\SQLEXPRESS,用户'sa'登录失败(错误18456)图文解决方法
查看>>
Codefroces 374 B Inna and Sequence (树状数组 || 线段树)
查看>>
柬埔寨旅游小结
查看>>
mysql left join 左连接查询关联n多张表
查看>>
无向图的最短路径算法JAVA实现(转)
查看>>
如何用Excel直接查询Oracle中的数据(转)
查看>>
Chrome 控制台不完全指南(转)
查看>>
如何写一个框架(转)
查看>>
故障排查:是什么 导致了服务器端口telnet失败?(转)
查看>>