如何制作这样一个翻页式广告的效果?
作者:admin发布时间:2021-08-23分类:跳转广告浏览:评论:13
不请自来。
这个用Ps处理不是很方便,可能关键原因在于我没有找到如何快速地将一个图片不断地进行切割,压缩,切割压缩的实现方法,所以我采用做了一下。
做这个图的思路是先找到一张原图,然后从这个原图的左侧开始,纵向切割下来一定宽度的图片条,将这个图片条横向压缩一个比例,然后和原图的最左侧对齐,再以这个横向压缩后的图片条的右边为起点,把右侧看成新的原图,重复上述步骤,直到所有图片条都被切割压缩并排列到一起。
代码如下:
all;;clc;=(C:\\\\BenWhishaw.jpg[h,w,z]=size(image);n=30;scale=1/3;w_fat=round(w/n);w_thin=round(w_fat*scale);tform=affine2d([scale00;010;001]);forii=1:w_thin:(w-w_fat)res(1:h,ii:(ii+w_thin-1),1:z)=imwarp(image(:,ii:(ii+w_fat-1),:),tform);endimshow(res);imwrite(res,C:\Users\Secant\Desktop\BenWhishaw_New.jpg)
n指定的是原图宽度与未被压缩的图片条的宽度之比,scale指定的是将图片条进行压缩的比例。图片的载入路径需要改成要处理的图片位置,保存路径要改成结果保存的位置。
===下面是代码效果===
原图:
处理后的:
参数是n=24,scale=2/5。
原图:
处理后的:
参数是n=24,scale=1/3。
========
程序稍微有点bug,遇到某些scale值会报错,应该是tform压缩时像素取整和around得到的并不匹配,可以改成下面这个代码:
close
all;clear;clc;image=imread(C:\Users\Secant\Desktop\BenWhishaw.jpg[h,w,z]=size(image);n=30;scale=1/3;w_fat=round(w/n);tform=affine2d([scale00;010;001]);temp=imwarp(image(:,1:w_fat,:),tform);[~,w_thin,~]=size(temp);cleartempforii=1:w_thin:(w-w_fat)res(1:h,ii:(ii+w_thin-1),1:z)=imwarp(image(:,ii:(ii+w_fat-1),:),tform);endimshow(res);imwrite(res,C:\Users\Secant\Desktop\BenWhishaw_New.jpg)
结果图和原图宽度并非一致,主要原因是最后一个图片条宽度肯定不够。但是边缘处基本不影响整体图片的效果。
===
发现这个东西还挺好玩,当你把一张图片处理一遍后,旋转一下结果图,再处理一遍,就能变成一个个小矩形:
可以看出这个图片远看像是被打了马赛克,但其实每一个小方格都包含了原图的原始信息(如果不考虑图片压缩的信息损失),也就是说,上面这张图完全可以进行逆操作得到原来的图片,除了损失掉的原图边缘的一部分信息(只要知道n和scale以及操作次数)。
当然,对一个图不旋转,反复应用这个滤镜,也能得到挺好玩的效果:
如果配合Photoshop中的极坐标转换的工具,还能实现下面这样的效果
当然啦因为没有随机的调整,所以和原作者的处理效果差很远,不过这段代码的提升空间也很大嘿嘿!
展开阅读全文
相关推荐
你 发表评论:
欢迎- 跳转广告排行
- 最近发表
已有13位网友发表了看法: