最近比较火的支付宝AR实景红包,感觉大玩起来还不错,就是有点耗电。
当然,我也是绞尽乳汁去想怎么搞个黑科技,把黑线给去掉,骗过支付宝粑粑,领取红包。经过半天的事件,终于有了初步成果,现在就分享给大家吧!
主流去黑线算法——等分互补法
各种百度一番,发现现在主流的去黑线的方法就是,等分互补法(这是我寄几总结的)
来看看最简单的ps方法吧:PS处理方法:PS打开图片,Ctrl+J新建图层,设置新图层透明度50%,上下挪动去除黑线。
大概思想就是如图一,用①和②错位互补去黑线,好了来看看最后结果图吧
问题来了
这个方法对等距离黑线来说还是很有用的,但是这种效果看起来却不是很好,是因为黑线不等距,而且①只是透明度50%,也就是说还有50%的黑线是在上面的,所以现在我们要解决的问题又两点:
1.解决黑线不等分;
2.扣掉黑线(不是统一设成50%的透明度)
前端技术去黑线
因为妹子是码砖的,对ps技术还不是熟练,打算用前端技术来实现在线去黑线(html+css+js)就这么简单粗暴的方法,然后挂在服务器上面,就可以实现一个在线去黑线的web网页,是不是听起来就很酷炫,let's start it!
核心算法
我自己的核心算法当然是基于上面的等分互补法,用前端技术来搞的;
第一步
背景图:当然是原图,没有任何透明度的支付宝红包原截屏图
作用:当然是用来被遮黑线的图;
第二步
条形等距缝隙条组:我这里是将需要去条纹的正方形区域高度等分成60份,分成3组;一组:3的倍数;二组:3余一;三组:三余二;
作用:通过调整每组的相对原图的上下位置达到去黑线效果;
第三步
都在第二步里面说了,当然是移动每组的相对高度;
前端代码实现
我这里总共所有的代码都只有一两百行代码,主要用的是CSS的“background-image”属性,想必懂前端的都不会陌生吧,我这里主要用的background-position来取每个条形的位置,高度当然是总高度的1/60,宽度就是原宽度,好吧,我们来看代码吧
css
css样式很简单,就一个背景图,条纹在上面局对定位;
html
html代码也很简单,一个原图,几个按钮,条纹是通过js添加上去的
javascript
javascript也很简单,就两部分:
一部:分初始化条纹,
第二部分:上下移动指定组的条纹,显示隐藏白条
来看结果吧!
before
after
好吧,不得不承认,这是次失败的结果!哈哈哈哈(默哀两分钟)
总结
e,总的来说去黑线还存在很大的难度的,就如我上文所说的,主要还是黑线不等距,而且尽量用黑线附近的条纹去填充黑线,还原度高一点,如果用微积分的思想去想,去黑线理论上还是可以实现,基于妹子技术有限,给大家提供一个思路,也希望大家也可以集思广益,也不是非要去抢几毛钱的红包(据说每天只能抢10次),但是对我们来说,我想,最后收获的不仅仅是几毛钱的红包吧!
这是我感觉做的比较好的在线去黑线一卷照片 - 支付宝AR红包图片处理