Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

сжатие файла txt [D7, XP]


Костька ©   (2006-04-21 18:19:00) 

если я кодирую *.jpeg в текстовый файл, затем сожму этот txt, потом получится восстанавить картинку?


TUser   (2006-04-23 06:50:00) [1]

> надо сказать, хорошо подобранная и правильно закодированная, чтоб получился "война и мир" :)))

Пробелами кодируют, например.


TUser   (2006-04-23 06:49:00) [2]

> Если б текст в картинку кодировать, это было бы стеганография.  

Чего угодно - во что угодно. Главное чтобы видно не было.


DevilDevil   (2006-04-23 03:54:00) [3]

Костька ©   (21.04.06 18:19)
Не мучайся. Словарному методу архивации (который используется в WinRar и др архиваторах) всё равно, какое расширение у файла, важно содержимое. А содержимое jpeg файлов таково, что степень их сжатия очень низка. Однако непонятно, почему возникают ошибки. Попробуй:
1) взять SomeJPG.jpg
2) переименовать: SomeJPG.txt
3) добавить в архив SomeJPG.rar
4) распаковать архив
5) переименовать в SomeJPG.jpg
6) открыть SomeJPG.jpg

Только что специально попробовал так сделать, всё без ошибок

Ошибки могли возникать если ты открывал файл в текстовом редакторе. Дело в том что в текстовом файле после каждой строки стоят два символа с кодами #10 и #13, и редактор может добавлять недостающий, если имеется только один из них, т.е изменятьфайл

Но если так хочется сжимать жпеги, то ОЧЕНЬ ПЛОХО ДОКУМЕНТИРОВАННАЯ библиотека zlib даст наилучший коэфициент сжатия. Она сжимает даже *.rar, прибавляет всего 26кб к размеру программы, абсолютно бесплатна и входит в поставку к Delphi. Просто добавь zlib в uses. Можешь использовать следующие функции:
function CompressStream(Dest, Source : TStream) : DWORD;
var
   C : TCompressionStream;
   Ps, Pd : integer;
begin
   Pd := Dest.Position;
   C := TCompressionStream.Create(clMax, Dest);
   Ps := Source.Position;
   Source.Position := 0;
   C.CopyFrom(Source, 0);
   C.Free;
   Result := Dest.Position - Pd;
   Dest.Position := Pd;
   Source.Position := Ps;
end;

function CompressFile(Dest, Source : string) : DWORD;
var D, S : TFileStream;
begin
   Result := 0;
   try
     D := TFileStream.Create(Dest, fmCreate);
     S := TFileStream.Create(Source, fmOpenRead);
     Result := CompressStream(D, S);
   finally
     D.Free;
     S.Free;
   end;
end;

function DecompressStream(Dest, Source : TStream) : DWORD;
var
   D : TDecompressionStream;
   buf : array[0..1023] of byte;
   BtRead, Ps, Pd : integer;
begin
   Ps := Source.Position;
   Pd := Dest.Position;
   Source.Position := 0;
   D := TDecompressionStream.Create(Source);
repeat
  BtRead := D.Read(buf, 1024);
  Dest.Write(buf,Btread);
until BtRead<1024;
   D.Free;
   Result := Dest.Position - Pd;
   Source.Position := Ps;
   Dest.Position := Pd;
end;

function DecompressFile(Dest, Source : string) : DWORD;
var D, S : TFileStream;
begin
   Result := 0;
   try
     D := TFileStream.Create(Dest, fmCreate);
     S := TFileStream.Create(Source, fmOpenRead);
     Result := DecompressStream(D, S);
   finally
     D.Free;
     S.Free;
   end;
end;


ЗЫ Если доведёшь их до ума, пришли мне обновления


palva   (2006-04-22 21:08:00) [4]

> правильно закодированная
Граф Толстой кодировал. Это вам не Base64.


Desdechado   (2006-04-22 21:00:00) [5]

> закодированная порнографическая коллекция
надо сказать, хорошо подобранная и правильно закодированная, чтоб получился "война и мир" :)))


palva   (2006-04-22 20:36:00) [6]

> Если б текст в картинку кодировать, это было бы стеганография. А наоборот - это что-то другое...

А что, открываешь текст - роман Война и мир. А на самом деле закодированная порнографическая коллекция. Чем не стеганография?


antonn   (2006-04-22 20:32:00) [7]

antonn ©   (22.04.06 20:31) [12]
дописывать а зад

в смысле в конец


antonn   (2006-04-22 20:31:00) [8]

Desdechado ©   (22.04.06 20:26) [11]
Если б текст в картинку кодировать, это было бы стеганография. А наоборот - это что-то другое...

это вроде дописывать а зад файлу другой файл, и при открытии его откроется только первый.


Desdechado   (2006-04-22 20:26:00) [9]

> Кажется, платная
а мне кажется, что наоборот

> А эта ветка - про стеганографию
Что-то я не вижу этого у автора. Если б текст в картинку кодировать, это было бы стеганография. А наоборот - это что-то другое...


SergP   (2006-04-22 10:23:00) [10]


> zlib - библиотечка, которая умеет запаковать и распаковать
> текст (и не только). Кажется, платная.


Это как? Она же уже есть в Delphi, т.е. входит в стандартную поставку.


TUser   (2006-04-22 09:02:00) [11]

Тот товарисч в Орешнике. А эта ветка - про стеганографию. Никакого юмора.

zlib - библиотечка, которая умеет запаковать и распаковать текст (и не только). Кажется, платная.


SergP   (2006-04-22 04:28:00) [12]


> если я кодирую *.jpeg в текстовый файл, затем сожму этот
> txt, потом получится восстанавить картинку?


Помнится один товарисч пытался толи картинку в текст перекодировать, толи наоборот -точно не помню. :-)
Только какой в этом смысл - я не пойму.


Gydvin   (2006-04-22 01:10:00) [13]


> А почему не в rtf?


:))))

наверное думает, что ужмется лучше   ))))))))))))


Gero   (2006-04-22 00:48:00) [14]

А почему не в rtf?


Костька   (2006-04-21 18:37:00) [15]

завтра приду, домой пора. всем СПА-СИБО. ДО ВСТРЕЧИ.


Desdechado   (2006-04-21 18:34:00) [16]

> я кодирую *.jpeg в текстовый файл
сначала попробуй раскодировать назад для восстановления картинки, а потом уже задавайся вопросами о сжатии


palva   (2006-04-21 18:34:00) [17]

> архиватором не получается
Не получается сжать или не получается восстановить. Расскажите подробнее, чем кодируете, какой архиватор, какие сообщения об ошибке.


Костька   (2006-04-21 18:31:00) [18]

архиватором не получается. где-то слышал про zlib, что это?


TUser   (2006-04-21 18:27:00) [19]

Смотря как сожмешь. Если архиватором - то получится.


Наверх

Титульная страница Поиск, карта сайта Написать письмо