Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi zLIB komprimiert nuuuur ein paar kb (https://www.delphipraxis.net/124799-zlib-komprimiert-nuuuur-ein-paar-kb.html)

hedie 25. Nov 2008 13:55


zLIB komprimiert nuuuur ein paar kb
 
hallo

ich verwende folgende zLIB http://www.dellapasqua.com/delphizlib/

Mein Code sieht so aus:

Delphi-Quellcode:
 

procedure Compress(InputFileName, OutputFileName: string);
var InputStream, OutputStream: TFileStream;
  CompressionStream: TZCompressionStream;
begin
  InputStream:=TFileStream.Create(InputFileName, fmOpenRead);
  try
    OutputStream:=TFileStream.Create(OutputFileName, fmCreate);
    try
      CompressionStream:=TZCompressionStream.Create(OutputStream, zcMax);
      try
        CompressionStream.CopyFrom(InputStream, InputStream.Size);
      finally
        CompressionStream.Free;
      end;
    finally
      OutputStream.Free;
    end;
  finally
    InputStream.Free;
  end;
end;

procedure Decompress(InputFileName, OutputFileName: string);
var InputStream, OutputStream: TFileStream;
  DeCompressionStream: TZDeCompressionStream;
  Buf: array[0..4095] of Byte;
  Count: Integer;
begin
  InputStream:=TFileStream.Create(InputFileName, fmOpenRead);
  try
    OutputStream:=TFileStream.Create(OutputFileName, fmCreate);
    try
      DecompressionStream := TZDecompressionStream.Create(InputStream);
      try
        while true do
        begin
          Count := DecompressionStream.Read(Buf[0], SizeOf(Buf));
          if Count = 0 then
            break
          else
            OutputStream.Write(Buf[0], Count);
        end;
      finally
        DecompressionStream.Free;
      end;
    finally
      OutputStream.Free;
    end;
  finally
    InputStream.Free;
  end;
end;

procedure TForm1.SpeedButton3Click(Sender: TObject);
begin
  if Opendialog1.Execute and SaveDialog1.Execute then Compress(OpenDialog1.FileName,SaveDialog1.FileName);
end;

procedure TForm1.SpeedButton4Click(Sender: TObject);
begin

  if Opendialog1.Execute and Savedialog2.Execute then DeCompress(OpenDialog1.FileName,SaveDialog2.FileName);

end;

Doch selbst bei angabe von zcMax ist der unterschied bei einer 1.57MB MP3 Datei gerademal ca 20kb ( nachher 1.55MB)
bei einem 70MB grossen Video sind es ca 3 MB.....

Ist die Komprimierungsrate von zLIB tatsächlich so schlecht oder mache ich etwas falsch?

Hoffe ihr könnt mir helfen....

Danke schonmal

mkinzler 25. Nov 2008 13:59

Re: zLIB komprimiert nuuuur ein paar kb
 
Könnte daran leigen, das du bereits komprimierte dateien komprimierst

Gausi 25. Nov 2008 14:00

Re: zLIB komprimiert nuuuur ein paar kb
 
Probier das ganze mal mit einem Bitmap oder einer Textdatei. ;-)

hedie 25. Nov 2008 14:04

Re: zLIB komprimiert nuuuur ein paar kb
 
Misst hatte ich ja total vergessen :)

Vielen Dank!!!!

Bernhard Geyer 25. Nov 2008 14:04

Re: zLIB komprimiert nuuuur ein paar kb
 
Zitat:

Zitat von hedie
Doch selbst bei angabe von zcMax ist der unterschied bei einer 1.57MB MP3 Datei gerademal ca 20kb ( nachher 1.55MB)
bei einem 70MB grossen Video sind es ca 3 MB.....

Ist die Komprimierungsrate von zLIB tatsächlich so schlecht oder mache ich etwas falsch?

MP3 und Videodateien stellen schon komprimierte Datenformate dar. Wenn dann mit WAV-Dateien und ältere AVI-Dateien.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz