真的难嘛,不会吧,老大们敲几个字啊 (50分)

  • 主题发起人 主题发起人 suwle
  • 开始时间 开始时间
S

suwle

Unregistered / Unconfirmed
GUEST, unregistred user!
请问图形的压缩方法,及怎么改变他的色彩值,如16色,256色,OK
 
没有人回答吗
 
救命啊,提供任何一点线索也可以啊
 
[:(][:(][:(][:(][:(][:(][:(][:(][:(]
 
很多很多呀!你用‘图形 压缩’搜一下。给你举两个
http://www.delphibbs.com/delphibbs/dispq.asp?lid=285320
http://www.delphibbs.com/delphibbs/dispq.asp?lid=576478
 
这个我不记得从哪里得到的,我也没有用过,不知可行否,随便贴出来吧。

压缩图像

procedure CompressBitmap(var CompressedStream: TMemoryStream;const CompressionLevel: TCompressionLevel);
var
SourceStream: TCompressionStream;
DestStream: TMemoryStream;
Count: Integer;
Begin
//获得图像流的原始尺寸
Count := CompressedStream.Size;
DestStream := TMemoryStream.Create;
SourceStream:=TCompressionStream.Create(CompressionLevel, DestStream);
Try
//SourceStream中保存着原始的图像流
CompressedStream.SaveToStream(SourceStream);
//将原始图像流进行压缩, DestStream中保存着压缩后的图像流
SourceStream.Free;
CompressedStream.Clear;
//写入原始图像的尺寸
CompressedStream.WriteBuffer(Count, SizeOf(Count));
//写入经过压缩的图像流
CompressedStream.CopyFrom(DestStream, 0);
finally
DestStream.Free;
end;

end;

还原被压缩图像

procedure UnCompressBitmap(const CompressedStream: TFileStream; var Bmp: TBitmap);
var
SourceStream: TDecompressionStream;
DestStream: TMemoryStream;
Buffer: PChar;
Count: Integer;
Begin
//从被压缩的图像流中读出原始图像的尺寸
CompressedStream.ReadBuffer(Count, SizeOf(Count));
//根据图像尺寸大小为将要读入的原始图像流分配内存块
GetMem(Buffer, Count);
DestStream := TMemoryStream.Create;
SourceStream := TDecompressionStream.Create(CompressedStream);
Try
//将被压缩的图像流解压缩,然后存入 Buffer内存块中
SourceStream.ReadBuffer(Buffer^, Count);
//将原始图像流保存至 DestStream流中
DestStream.WriteBuffer(Buffer^, Count);
DestStream.Position := 0;//复位流指针
//从 DestStream流中载入原始图像流
Bmp.LoadFromStream(DestStream);
finally
FreeMem(Buffer);
DestStream.Free;
end;

end;
 
后退
顶部