目标:处理gif的时候,需要提取每帧的透明色。
这个问题困扰偶n长时间了,一直没搞定。
比如我自己做了一个gif图片,全局背景色是黑色,第一帧透明色是白色,但是黑色在第一帧里面是有用的象素,我的目标是找出第一帧的透明色,然后把第一帧中和透明色相同的颜色换掉(在处理中,我只需要第一帧,此时第一帧已经被我转换成bmp了),我在测试的时候,只能得到gif.BackgroundColor,但是这个颜色是全局透明色!!
搞定问题,另开贴,500分,绝不食言。
本贴先给100分作为参与者鼓励,如参与人数多,再加分(兄弟最多能加到200)。
这个问题困扰偶n长时间了,一直没搞定。
比如我自己做了一个gif图片,全局背景色是黑色,第一帧透明色是白色,但是黑色在第一帧里面是有用的象素,我的目标是找出第一帧的透明色,然后把第一帧中和透明色相同的颜色换掉(在处理中,我只需要第一帧,此时第一帧已经被我转换成bmp了),我在测试的时候,只能得到gif.BackgroundColor,但是这个颜色是全局透明色!!
搞定问题,另开贴,500分,绝不食言。
本贴先给100分作为参与者鼓励,如参与人数多,再加分(兄弟最多能加到200)。
解决方案 »
- delphi 开发的程序能不能与web结合,嵌入到web中去
- 菜鸟急问Delphi的数据传输问题,各位大侠不吝赐教!
- 请教怎样用dbgrideh制作一个不规则的报表?
- 一个个人认为比较有创意的窗体设计思路,高手请赐教
- 如何判断服务器是否连接正常?
- 今天生日,可刚毕业在外面找到工作,没人帮我庆祝,郁闷啊,散分
- 如何实现后台打印?
- dbgrid的小问题
- 请问在DX系统控件,什么控件相当于delhpi的基础控件richMemo?我没有找到dxRichMemo.
- 这个是不是image控件的BUG啊?还是有其他办法解决这个问题?
- 昏(一不小心删除了一个帖子)信用分减了怎么加上去啊!
- 有没有人作过情报板编程?
那你查查它的帮助和看看DEMO..自己试试那些属性,应该有的...
我的函数如下:
{-----------------------------------------------------------------------------
函数名称: GetGifSubmitTransColor
作者 : yang
日期 : 2004-11-9 12:39:29
参数 : GifPath: string; acMap: TGifColorMap
返回值 : TColor
功能 : 根据传入的gif文件路径和gif颜色列表返回符合gif89a标准的第一帧透明色
-----------------------------------------------------------------------------}
function TPlusObject.GetGifSubmitTransColor(GifPath: string;
acMap: TGifColorMap): TColor;
var
ms : TMemoryStream;
i : Integer;
buf : array[0..7] of Byte;
begin
Result:= -1;
ms:= TMemoryStream.Create;
ms.LoadFromFile(GifPath);
//笨办法,通过查找扩展控制块标记$21完成查找透明色的功能。
for i:=0 to ms.Size-9 do
begin
ms.Position:= i;
ms.read(buf,8);
if (buf[0]=$21) and (buf[7]=$0) then
begin
//根据gif89a的定义,这个地方的buf[6]就是透明色的索引值
if acMap.Count>buf[6] then Result:= acMap.Colors[buf[6]];
break;
end;
end;
ms.Free;
end;