图像压缩问题!! JPG格式怎么存?菜鸟请教了! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 楼上的老兄呀,用jpg格式,才能压缩多少呀,我这个默认值就能压100倍! unit zipfunc;{压缩解压单元作者:fontain 日期:2002.2.9功能: compressstream:从指定流中压缩内容,结果存到指定文件和原流 uncompressfile: 从指定文件解压,结果存到指定流使用单元:zlib,classes,Sysutils;}interfaceuses zlib,classes,Sysutils;Function CompressToFile(var CompressedStream: TMemoryStream;const filename:string):boolean;function UnCompressFromFile(const filename:string;var res: TMemoryStream):boolean;implementationFunction CompressToFile(var CompressedStream: TMemoryStream;const filename:string):boolean;var SourceStream: TCompressionStream; DestStream: TMemoryStream; Count: Integer;Begin //获得数据流的原始尺寸 result:=false; Count := CompressedStream.Size; DestStream := TMemoryStream.Create; SourceStream:=TCompressionStream.Create(clDefault, DestStream); Try //SourceStream中保存着原始的数据流 CompressedStream.SaveToStream(SourceStream); //将原始数据流进行压缩, DestStream中保存着压缩后的数据流 SourceStream.Free; CompressedStream.Clear; //写入原始数据流尺寸 CompressedStream.WriteBuffer(Count, SizeOf(Count)); //写入经过压缩的数据流 CompressedStream.CopyFrom(DestStream, 0); CompressedStream.SaveToFile(filename); result:=true; finally DestStream.Free; end;end;function UnCompressFromFile(const filename: string;var res: TMemoryStream):boolean;//解压缩文件数据流var SourceStream: TDecompressionStream; Buffer: PChar; Count: Integer; CompressedStream:TFileStream;Begin result:=false; //从被压缩的数据流中读出原始数据流尺寸 CompressedStream:=TFileStream.Create(filename,fmOpenRead); CompressedStream.ReadBuffer(Count, SizeOf(Count)); //根据数据流尺寸大小为将要读入的原始数据流分配内存块 GetMem(Buffer, Count); SourceStream := TDecompressionStream.Create(CompressedStream); Try //将被压缩的数据流解压缩,然后存入 Buffer内存块中 SourceStream.readBuffer(Buffer^, Count); //将原始数据流保存至res流中 res.writeBuffer(Buffer^, Count); res.Position := 0;//复位流指针 result:=true; finally FreeMem(Buffer); CompressedStream.Free; end;end;end. to 40Star(陪你去看--☆流星雨★) uses graphics,jpeg,......;.....var a:TBitMap; b:TjpegImage;begin a:=TBitMap.Create; b:=TJpegImage.Create; a.LoadFromFile('e:\aa.bmp'); b.Assign(a); b.SaveToFile('e:\kk.jpg'); a.free; b.free;end; to: fontain代码在exe中执行没问题但原样移植到dll就出错,各位看看怎么回事?...b.Assign(a); //出错句... 怎样修改IE的类名? delphi做flash的外壳 发现Dephi写底层的东西力不从心 过渡问题!!回答!!!! 如何用DELPHI编程实现快速搜索WORD里的字符串! REALmagic控件发布了,要的去下,功能齐全,免费哟!!! 关于TreeView1的一个问题? 紧急求救:在打开Frame的设计视图时老是提示TabOrder错误,怎么回事? 李维的《Delphi 5.x 分布式多层应用系统篇》的附带光盘哪儿有得下! DELPHI编写输入EXCEL的XLS文件 输出AUTOCAD的DXF文件 简单的要命的文件问题 图像问题,高手请进!
{
压缩解压单元作者:fontain 日期:2002.2.9功能:
compressstream:从指定流中压缩内容,结果存到指定文件和原流
uncompressfile: 从指定文件解压,结果存到指定流
使用单元:zlib,classes,Sysutils;
}
interface
uses zlib,classes,Sysutils;
Function CompressToFile(var CompressedStream: TMemoryStream;const filename:string):boolean;
function UnCompressFromFile(const filename:string;var res: TMemoryStream):boolean;
implementation
Function CompressToFile(var CompressedStream: TMemoryStream;const filename:string):boolean;
var
SourceStream: TCompressionStream;
DestStream: TMemoryStream;
Count: Integer;
Begin
//获得数据流的原始尺寸
result:=false;
Count := CompressedStream.Size;
DestStream := TMemoryStream.Create;
SourceStream:=TCompressionStream.Create(clDefault, DestStream);
Try
//SourceStream中保存着原始的数据流
CompressedStream.SaveToStream(SourceStream);
//将原始数据流进行压缩, DestStream中保存着压缩后的数据流
SourceStream.Free;
CompressedStream.Clear;
//写入原始数据流尺寸
CompressedStream.WriteBuffer(Count, SizeOf(Count));
//写入经过压缩的数据流
CompressedStream.CopyFrom(DestStream, 0);
CompressedStream.SaveToFile(filename);
result:=true;
finally
DestStream.Free;
end;
end;function UnCompressFromFile(const filename: string;var res: TMemoryStream):boolean;
//解压缩文件数据流
var
SourceStream: TDecompressionStream;
Buffer: PChar;
Count: Integer;
CompressedStream:TFileStream;
Begin
result:=false;
//从被压缩的数据流中读出原始数据流尺寸
CompressedStream:=TFileStream.Create(filename,fmOpenRead);
CompressedStream.ReadBuffer(Count, SizeOf(Count));
//根据数据流尺寸大小为将要读入的原始数据流分配内存块
GetMem(Buffer, Count);
SourceStream := TDecompressionStream.Create(CompressedStream);
Try
//将被压缩的数据流解压缩,然后存入 Buffer内存块中
SourceStream.readBuffer(Buffer^, Count);
//将原始数据流保存至res流中
res.writeBuffer(Buffer^, Count);
res.Position := 0;//复位流指针
result:=true;
finally
FreeMem(Buffer);
CompressedStream.Free;
end;
end;end.
uses graphics,jpeg,......;
.....
var a:TBitMap;
b:TjpegImage;
begin
a:=TBitMap.Create;
b:=TJpegImage.Create;
a.LoadFromFile('e:\aa.bmp');
b.Assign(a);
b.SaveToFile('e:\kk.jpg');
a.free;
b.free;
end;
代码在exe中执行没问题但原样移植到dll就出错,各位看看怎么回事?
...
b.Assign(a); //出错句
...