网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
成为超级会员,使用一键签到
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
12月28日
漏签
0
天
重庆中天学院吧
关注:
15,224
贴子:
50,229
看贴
图片
吧主推荐
游戏
6
回复贴,共
1
页
<<返回重庆中天学院吧
>0< 加载中...
gif图片生成【转】
取消只看楼主
收藏
回复
爱小怪小怪小怪
武林新贵
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
一不小心看到有吧友的签名是一个扭动的妹子,觉得有意思,就发到了群里。没想到群里的朋友直接给发来一份原版的图片,也就是下面的这俩:
爱小怪小怪小怪
武林新贵
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
于是,问题就先拆分成对一张图片的转化。
分析到这里,应该可以预见到一个问题:
一张图片的像素很多,如果每一个像素都对应一个字符,那么生成的字符图片也太大了。
就像下图一样(招来一个女神照片来做的,其中的字符的字体已经被我设置为最小,以便“纵览全局”)
爱小怪小怪小怪
武林新贵
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
上面这个问题的原因就是字符图片的像素太高!
所以我们要减少像素,也就是减少字符的总量。这样一个字符就不能代表一个点,而一个区域。而一个区域内的RGB值怎么计算?我这里采用的是取平均数。
有了这个思路,就进一步完善我们的算法。
这时候再次处理同一张图片,我们就会发现,“字符图片”的分辨率降低了。这次截图可以将整个图片都截取进来,但是清晰度也降低了。
爱小怪小怪小怪
武林新贵
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
到了这一步,发现基本技术已经满足了需求。
剩下的就是gif的问题了。如何读取gif中的每一帧,然后进行转化。
还有一个问题就是,我之前做的都是将字符写在文本文件中,为了做成gif,应该生成一个jpg或者其他格式的一些图片。
也就是说将字符写入到BufferedImage中,然后用ImageIO.write方法生成一个图片。
字符如何写入BufferedImage中,涉及到了一些字体、字号、字符间距的设置,还有字符图片与原图片的比例等等,这里就不一一赘述。
爱小怪小怪小怪
武林新贵
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
期间也绕了一些弯路,显示用Swing的JTextArea来做的,后来发现效果极差。。因为这个textArea控件居然都不会把字符自动对齐。。
现在回到了BufferedImage上面。
经过了上面的弯路,还有一些参数的调优,终于可以生成了n张独立的jpg图片。
我上网调查了一下,Java如果将一些jpg整合成gif,需要一个额外的包。AnimatedGifEncoder包,我简单查了一下,都是积分下载,就没有去弄。。。
直接拿生成的图片用一些其他工具整合成gif得了,这里偷个懒。
爱小怪小怪小怪
武林新贵
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
源码已经上传到网盘
http://pan.baidu.com/s/1eQxht8e
不谢,请叫我雷锋
爱小怪小怪小怪
武林新贵
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
我的梦中情人是一个盖世英雄```有一天,他会驾着五彩祥云来娶我
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示