Что такое эквивалент C # Delphi TDecompressionStream? - PullRequest
0 голосов
/ 08 мая 2009

У меня есть некоторый код Delphi, который сделал это, должен быть перекодирован в C #:

procedure TDocSearchX.Decompress;
var
BlobStream:TBlobStream;
DecompressionStream:TDecompressionStream;
FileStream:TFileStream;
Buffer:array[0..2047] of byte;
count:integer;
begin
    BlobStream:=TBlobStream.Create(DocQueryDATA,bmRead);
    DecompressionStream:=TDecompressionStream.Create(BlobStream);
    FileStream:=TFileStream.Create(FDocFile,fmCreate);
    while True do
    begin
        Count := DecompressionStream.Read(Buffer, 2048);
        if Count <> 0 then FileStream.Write(Buffer, Count) else Break;
    end;
    Blobstream.Free;
    DecompressionStream.Free;
    FileStream.Free;
end;

Подрядчик, который написал это, уходит, и мне нужно распаковать изображение (которое в настоящее время хранится в базе данных). Я был в состоянии извлечь изображение в файл, но не знаю, как распаковать его с помощью C #?

Ответы [ 3 ]

3 голосов
/ 08 мая 2009

Похоже, TDecompressionStream, вероятно, использует ZLib. Вот библиотека .NET для ZLIB:

http://www.componentace.com/zlib_.NET.htm

1 голос
/ 08 мая 2009

Насколько мне известно, нет .Net Framework, эквивалентного классу TDecompressionStream. Можете ли вы написать небольшое приложение-конвертер в Delphi, которое распаковывает изображение? Тогда вы можете свободно использовать любую библиотеку сжатия (например, SharpZipLib), поддерживающую .Net, в вашем коде C #.

0 голосов
/ 08 мая 2009

Если вам нужно сохранить то же сжатие, которое уже использовалось, сверните процедуру распаковки Delphi в DLL и используйте ее из C # с помощью PInvoke.

Если вы хотите заменить сжатие, напишите пакетный процесс для извлечения сжатых изображений Delphi, распакуйте их в исходный формат и повторно сожмите в вашу любимую библиотеку C #.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...