GIF图像格式(一)——基础算法(上)

首先道个歉:昨天写着写着突然熄灯,以至于写了80%的这篇文章不得不灰飞烟灭,我可怜的电脑也被裸关一次,没有办法,校有校规啊,所以只好今天从头开始再写一遍。
言归正传。

写着篇文章之前,我县假定你已经对于什么是GIF很清楚了,如果你不清楚的话,建议你到网上搜索一下“GIF文件简介”看看。

GIF作为一种面向网络的图像格式,他的种种设计都是以“便于在网络上使用”为原则的。网络使用的第一个原则就是文件大小。如何使用有效的压缩算法使文件的大小得以减小,是GIF文件要解决的首要问题。对于这个问题,GIF采用的是压缩效率很好的LZW压缩算法。这个算法的压缩效率、压缩比都是极高的,但是有一点不好:它是有版权的。

因此我的第一部分,是介绍LZW算法,与GIF文件格式的内容无关,只是一种算法,但是它是LZW-GIF压缩算法(GIF使用的压缩算法)的基础。

1、概述
LZW算法的基本思想很简单:在一个输入的未压缩的字节流中,一定有很多的重复出现的字符串,那么用一个字节来表示这个字符串,不就起到了压缩的作用了吗?

下面我们先看几个概念,这几个概念将会在下面的介绍中反复出现,因此请记住他们。

Char Stream(未编码的字节流):作为编码的输入和解码的输出,使未经压缩的字节流,我们要处理的对象。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一个可以实现GIF编码的动态链接库DLL文件GIFINFO.dll。 引用GIFINFO.dll文件后。 在程序中定义GIFINFO类实例,如GIFEncode,然后调用实例的GIFCode方法,就可以实现图像信息的GIF编码。 它的格式如下: Function GIFCode(PicInfo() As Long,FileName As String) 参数PicInfo是长整型数组,它存放你的图片像素颜色信息,每个数组元素都对应一个RGB()类型长整型值。 如6*6的图像, RGB(0,255,0) RGB(0,255,0) RGB(0,255,0) RGB(0,255,0) RGB(0,255,0) RGB(0,255,0) RGB(0,255,0) RGB(0,255,0) RGB(0,255,0) RGB(0,255,0) RGB(0,255,0) RGB(0,255,0) RGB(0,255,0) RGB(0,255,0) RGB(0,255,0) RGB(0,255,0) RGB(0,255,0) RGB(0,255,0) RGB(255,0,0) RGB(255,0,0) RGB(255,0,0) RGB(255,0,0) RGB(255,0,0) RGB(255,0,0) RGB(255,0,0) RGB(255,0,0) RGB(255,0,0) RGB(255,0,0) RGB(255,0,0) RGB(255,0,0) RGB(255,0,0) RGB(255,0,0) RGB(255,0,0) RGB(255,0,0) RGB(255,0,0) RGB(255,0,0) FileName是你要保存的图像文件名信息,要求是以.GIF结尾的,如App.Path & "abc.gif" 这个函数执行之后,你就可以在你指定的位置找到你压缩的GIF图像了。 当然你可以要求压缩带透明区域的GIF图像,方法是将透明区域的数组元素值设置为-1。 如6*6大小的图像用的PicInfo()数组中的一些值是-1 -1 -1 -1 RGB(0,255,0) RGB(0,255,0) RGB(0,255,0) -1 -1 -1 RGB(0,255,0) RGB(0,255,0) RGB(0,255,0) -1 -1 -1 RGB(0,255,0) RGB(0,255,0) RGB(0,255,0) RGB(255,0,0) RGB(255,0,0) RGB(255,0,0) RGB(255,0,0) RGB(255,0,0) RGB(255,0,0) RGB(255,0,0) RGB(255,0,0) RGB(255,0,0) RGB(255,0,0) RGB(255,0,0) RGB(255,0,0) RGB(255,0,0) RGB(255,0,0) RGB(255,0,0) RGB(255,0,0) RGB(255,0,0) RGB(255,0,0)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值