Einzelnen Beitrag anzeigen

Astat

Registriert seit: 2. Dez 2009
Ort: München
320 Beiträge
 
Lazarus
 
#2

Re: selbstgebastelter webcam stream

  Alt 5. Feb 2010, 13:58
Zitat von jokerfacehro:
Hoffe da hat jemand was parat
Hallo jokerfacehro, hatte dies mal in Verwendung. Errorbehandlung musst Du nachziehn, ist damals etwas dürftig ausgefallen.

Delphi-Quellcode:

uses
  ZLibEx;


procedure CompressBitmap_Slow(bmp: TBitmap; var Data: string);
var
   ms : TMemoryStream;
   buf : pointer;
   size : integer;
begin
  ms := TMemoryStream.Create;
  bmp.SaveToStream(ms);
  ZCompress(ms.Memory, ms.Size, buf, size);
  SetLength(Data, size);
  Move(buf^, Data[1], size);
  FreeMem(buf);
  ms.Free;
end;

procedure CompressBitmap(bmp: TBitmap; var Data: string);
var
   cs: TZCompressionStream;
   ms: TMemoryStream;
begin
  ms := TMemoryStream.Create;
  cs := TZCompressionStream.Create(ms,zcDefault); // clDefault ist schneller als clMax
  bmp.SaveToStream(cs);
  cs.Free;
  SetLength(Data, ms.Size);
  Move(ms.Memory^, Data[1], ms.Size);
  ms.Free;
end;

procedure UnCompressBitmap(const Data: string; bmp: TBitmap);
var
  ms : TMemoryStream;
  buf : pointer;
  size : integer;
  outsize:integer;
begin
   try
     size:=0;
     outsize:=Length(Data) * 3;
     ZDecompress(@Data[1], Length(Data), buf,outsize, size);
   except
      on E: Exception do begin
         E.Message := Format('Error Decompressing Buffer (Len = %d):'#13#10'%s', [Length(Data), e.Message]);
         raise;
      end;
   end;
   ms := TMemoryStream.Create;
   ms.Write(buf^, outSize);
   FreeMem(buf);
   ms.Position := 0;
   Assert(bmp <> nil);
   bmp.LoadFromStream(ms);
   ms.Free;
end;
lg. Astat
Angehängte Dateien
Dateityp: rar zlib1.2.3_751.rar (36,1 KB, 33x aufgerufen)
Lanthan Astat
06810110811210410503210511511603209711003210010110 9032084097103
03211611111604403209711003210010110903210010510103 2108101116122
11610103209010110510810103206711110010103210511003 2068101108112
10410503210310111509910411410510109810111003211910 5114100046
  Mit Zitat antworten Zitat