前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >快来制作个属于你自己的新年快乐.gif 吧~

快来制作个属于你自己的新年快乐.gif 吧~

作者头像
狂人V
发布2021-03-10 15:06:51
6510
发布2021-03-10 15:06:51
举报
文章被收录于专栏:电子狂人
最近公众号主要在更MATLAB相关的教程,然后今天就突然有了个有趣的想法,就折腾了这个“好玩”的东西,用MATLAB制作GIF格式的动图。

接下来简单介绍下程序,

就不具体解释其原理了,

主要就是想弄个有趣的,

给新年来个特殊的仪式。

整个实现流程分为以下三个步骤:

【1】找素材

这个就不需要教了吧,上网找自己需要的素材图片,最好用同样格式的图片,方便后续的批量处理,如果图片多了,可以对等下的代码做一定修改,弄成对应格式的批量处理。

【2】重命名

网上找的图片很显然名字都比较乱,如下所示:

为了方便图片处理和合成,于是对图片重新命名,程序如下:

代码语言:javascript
复制
files=dir('.\素材\*.png');%获取素材路径下png格式的图片
for i=1:numel(files)%对全部图片重命名
   old_name=files(i).name;%获取原名
   Image=imread(['.\素材\' old_name]);%导入图片数据
   new_name=strcat(num2str(i),'.jpg');%生成新名
   imwrite(Image,['.\' new_name],'jpg');%重新写入并生成新图   
end

运行完脚本后,就会在程序的当前路径下看到有序的图片,且后缀名原为.png的也修改成了jpg的格式。

【3】修改图片信息并合成GIF动图

图片素材整理好了,就可以开始动图的制作了,不过查看图片信息,可以看到图片的分辨率不一致

如果直接合成的话,将会导致图片丢失要表达的信息,所以在合成之前还需要做分辨率修改的操作,为了方便,就直接与合成程序写在了一起,程序如下:

代码语言:javascript
复制
files=dir('.\*.jpg');%当前路径
number=numel(files);%获取jpg文件的数量
for i=1:number
   str=strcat(num2str(i),'.jpg') ;%获取文件名
   Image=imread(str);%读取图片
   [X,map]=rgb2ind(Image,256);%获取图片信息
   [X2, newmap] = imresize(X,map,'OutputSize',[500 500]);%修改图片分辨率,新分辨率为500x500,图片如果长宽比例相差太多,会变形
   if(i==1)
       imwrite(X2,newmap,'新年快乐.gif','delaytime',0.5,'loopcount',inf);%写入第一幅  
   else
       imwrite(X2,newmap,'新年快乐.gif','delaytime',0.5,'writemode','append');%往动图中添加图片
   end
end

运行完成后,在文件夹内可以看到,gif生成了,效果如下

想要这整套运行程序,在后台回复关键字自行获取:

关键字:【新年快乐】

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 电子狂人 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图片处理
图片处理(Image Processing,IP)是由腾讯云数据万象提供的丰富的图片处理服务,广泛应用于腾讯内部各产品。支持对腾讯云对象存储 COS 或第三方源的图片进行处理,提供基础处理能力(图片裁剪、转格式、缩放、打水印等)、图片瘦身能力(Guetzli 压缩、AVIF 转码压缩)、盲水印版权保护能力,同时支持先进的图像 AI 功能(图像增强、图像标签、图像评分、图像修复、商品抠图等),满足多种业务场景下的图片处理需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档