沭阳哪里可以做网站,go网站做富集分析,域名转接的流程,wordpress 取消标志脚本之家你与百万开发者在一起作者#xff1a;theOwlAndPussyCat/焦旭光引言电脑里存了很多有意思的Gif动态图片#xff0c;闲暇想把这些动图全导入微信表情#xff0c;可是这些动图很多大小超过了微信表情大小1MB的限制#xff0c;要制作成表情只能压缩图像文件大小。网上… 脚本之家你与百万开发者在一起作者theOwlAndPussyCat/焦旭光引言电脑里存了很多有意思的Gif动态图片闲暇想把这些动图全导入微信表情可是这些动图很多大小超过了微信表情大小1MB的限制要制作成表情只能压缩图像文件大小。网上有很多小的图像处理软件和图像处理网站尝试了很多效果都并不是很好。于是决定自己动手来处理图像文件让文件满足自己的要求。动态Gif图像由很多静态图像组成压缩方法无外乎有以下几种1、对每张图片进行裁剪去掉无关紧要的背景。2、每帧图像进行适当缩放。3、每张图片降低色彩空间。4、去除相似的静态图像减少静态图像的数量。本想用PS来手动一帧一帧修改无奈图片太多实在太麻烦。最后想到了使用做图像处理最强大通用的工具Matlab来修改压缩图片。先分享几张我压缩好制成微信表情的图片^ω^以下定义一些变量 gifname 需要处理的图像名称完整路径 cutname 处理之后的图像名称完整路径 cutregion 裁剪留下的方块区域 scale 缩放比例 cindex 颜色空间可取248163264128256 initframe 新图像第一帧对应源图像的帧数 stepframe 新图像相邻两帧对应源图像帧序数之差 stopframe 程序处理到源图像该帧数时停止 delaytime 新图像两帧之间延迟时间以下列出需要用到的重要函数 Imfinfo() 该函数用于获取图片信息包括图片的大小、格式、尺寸、颜色信息、修改时间等等。具体到Gif动图它会获取到一个图片信息的结构体矩阵可求出矩阵元素个数即图片信息结构体的数量来获取Gif中存储的静态图片的数量。 具体用法infoimfinfo(gifname); Imread() 该函数用于读取图片文件中的数据。 具体用法[indeximage,indexcolor]imread(gifname,frames,1); imcrop() 该函数用于图像的裁剪。 具体用法cutframeimcrop(indeximage,indexcolor,cutregion);% cutregion[1 1 100 100]; imresize() 该函数用于图像的缩放。 具体用法[resframe,resindexcolor]imresize(cutframe,indexcolor,scale,bilinear); ind2rgb() 索引颜色空间转换为rgb颜色空间 rgb2ind() rgb颜色空间转换为索引颜色空间程序完整源代码如下%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function[sourframes,destframes,usedframes]gifcut(argin1,argin2,argin3,argin4)%输入参数[源文件名,目标文件名],裁剪区域[左上右下],缩放比例,[颜色索引,起始帧,间隔帧,终止帧,延迟时间(最小0.01s)]%输出参数[源文件帧数,目标文件帧数,从源文件截取帧的编号]%此函数用于gif动态图裁剪缩小色彩降低截取%终止帧设为0时,读取到最后一帧;不输入延迟时间,默认延迟时间为原视频两帧间延迟,延迟时间设为0时,输出gif两帧间延迟时间为原视频两帧间延迟*间隔帧数,延迟时间不为0,输出gif两帧间延迟时间就是设置的延迟时间%代码编写:theOwlAndPussyCat/焦旭光/2019.08.27%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%sourframes0;destframes0;usedframes0;cutregion[0000];scale1.0;cindex256;initframe1;stepframe1;stopframe1;if length(argin1)1 error(There are not enough arguments)returnelse gifnameargin1(1); infoimfinfo(gifname); sourframeslength(info) delaytime0.01*info(1).DelayTime; cindexpower(2,info(1).BitDepth); stopframesourframes;if length(argin1)2 error(There are not enough arguments.)returnend cutnameargin1(2); cutregionargin2; scaleargin3;if length(argin4)0 cindexargin4(1);endif length(argin4)1 initframeargin4(2);endif length(argin4)2 stepframeargin4(3);endif length(argin4)3if argin4(4)0 stopframestopframe;else stopframeargin4(4);endendif length(argin4)4if argin4(5)0 delaytime0.01*delaytime*stepframe;else delaytimeargin4(5);endendendtempframe1;for i1:stopframeif iinitframe;[indeximage,indexcolor]imread(gifname,frames,i); cutframeimcrop(indeximage,indexcolor,cutregion);if scale~1.0[resframe,resindexcolor]imresize(cutframe,indexcolor,scale,bilinear);else resframecutframe; resindexcolorindexcolor;end rgbframeind2rgb(resframe,resindexcolor);[recframe,recindexcolor]rgb2ind(rgbframe,cindex); imwrite(recframe,recindexcolor,cutname,gif,Loopcount,inf,DelayTime,delaytime); tempframei; usedframestempframe;else if itempframestepframe iinitframe[indeximage,indexcolor]imread(gifname,frames,i); cutframeimcrop(indeximage,indexcolor,cutregion);if scale~1.0[resframe,resindexcolor]imresize(cutframe,indexcolor,scale,bilinear);else resframecutframe; resindexcolorindexcolor;end rgbframeind2rgb(resframe,resindexcolor);[recframe,recindexcolor]rgb2ind(rgbframe,cindex); imwrite(recframe,recindexcolor,cutname,gif,WriteMode,append,DelayTime,delaytime); tempframei; usedframes[usedframes,tempframe];endenddestframeslength(usedframes);end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%该matlab自定义函数使用方法 将该函数保存为gifcut.m文件夹下有testdog.gif文件该文件大小为7.9MB打开matlab调用此函数 gifcut([文件夹路径 estdog.gif,文件夹路径smalldog.gif],[1,1,650,434],0.5,[8,2,2]); 用时176.077501 秒。生成文件smalldog.gif 大小为554KB。 gifcut([文件夹路径 estdog.gif,文件夹路径smalldog2.gif],[1,1,650,434],0.5,[8,2,3,0,0.2]); 用时118.895854 秒。掉帧略多。生成文件small_dog2.gif 大小为374KB。范例文件如下最后是赞赏码小国企程序员穷哭求打赏 T^T __ORZ参考文献Matlab R2018b帮助文档源码下载后台回复关键字“微信表情源码”即可获取下载地址本文作者焦旭光声明本文为 脚本之家专栏作者 投稿未经允许请勿转载。● 2019 编程语言排行榜Java、Python 龙争虎斗PHP 屹立不倒● 脚本之家粉丝福利请查看● 经典算法题 两个大数相乘(华为面试)● 微软劝你别再使用 IE 浏览器● 最具潜力的编程语言GO有新书啦小贴士返回 上一级 搜索“Java 女程序员 大数据 留言送书 运维 算法 Chrome 黑客 Python JavaScript 人工智能 女朋友 MySQL 书籍 等关键词获取相关文章推荐。