Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2003.12.30;
Скачать: [xml.tar.bz2];

Вниз

Как фиксировать значение размера потока TJPEGImage?   Найти похожие ветки 

 
Andrew   (2003-08-28 09:14) [0]

Ниже приведен пример кода, в котором величина размера потока изменяется при каждом нажатии на кнопке Button1. Непонятно почему? Ведь JPEGImage манипулирует с одной и той же картинкой в Image1. Мастера, объясните почему это происходит и как не изменяя приведенной схемы кода (!) события Button1 сделать так (что-то добавить или несколько модифицировать код), чтобы Stream.Size оставался неизменным!

procedure TForm1.FormCreate(Sender: TObject);
............................................................
begin
............................................................
Image1.Picture.Bitmap.Assign("sample.jpg");
...................................................
end;

procedure TForm1.Button1Click(Sender: TObject);
var JPEGImage: TJPEGImage;
Stream: TMemoryStream;
begin
JPEGImage:= TJPEGImage.Create;
Stream:= TMemoryStream.Create;
try
JPEGImage.Assign(Image1.Picture.Bitmap);
JPEGImage.SaveToStream(Stream);

Stream.Position:= 0;
JPEGImage.LoadFromStream(Stream);
Image1.Picture.Bitmap.Assign(JPEGImage);
Label1.Caption:= Format("%d bytes", [Stream.Size]);
finally
Stream.Free;
JPEGImage.Free;
end;
end;


 
Andrew   (2003-08-28 09:46) [1]

Извините ошибся - в процедуре FormCreate следует читать Image1.Picture.Bitmap.LoadFromFile("sample.jpg");

Пожалуйста Мастера, очень необходимо решение данной проблемы!
Андрей


 
Andrew   (2003-08-28 14:46) [2]

Пожалуйста Мастера, очень необходимо решение данной проблемы!
Андрей


 
Dimka Maslov   (2003-08-28 15:48) [3]

Формат JPEG подразумевает потерю данных при сжатии. Следовательно, когда ты выполняешь Image1.Picture.Bitmap.Assign, отображается восстановленная из JPEG искажённая картинка. Когда ты в следующий раз нажимаешь на кнопку, JPEG начинает сжимать искажённую картинку, при этом размер сжатого потока уменьшается, и так далее, пока качество не станет отвратительным. Во избежание безобразия достаточно убрать лишнюю строку Image1.Picture.Bitmap.Assign(JPEGImage)


 
Andrew   (2003-08-28 16:25) [4]

Dimka Maslov

Спасибо за ответ!
А какой же тогда можно использовать тип графического файла, чтобы и сжимал максимально картинку и при восстановлении не было потери данных? Мне необходимо работать с картинкой через поток! Ведь формат JPEG считается самым лучшим по сжатию или я ошибаюсь.
Можно более детальнее и возможно со ссылкой на источник "этого файла", лучше чем JPEG.


 
Reindeer Moss Eater   (2003-08-28 16:33) [5]

JPEG считается самым лучшим по сжатию или я ошибаюсь.
Он ориентирован на изображения вполне определенного типа.
И имеет хорошее соотношение качество/степень сжатия для этих изображений.
Это не самый лучший способ сжатия изображений вообще.


 
Andrew   (2003-08-28 16:49) [6]

Пожалуйста, можно более конкретнее.


 
Reindeer Moss Eater   (2003-08-28 16:55) [7]

Про что?


 
Andrew   (2003-08-28 17:11) [8]

Какой Вы считаете лучший способ сжатия для изображений?


 
Reindeer Moss Eater   (2003-08-28 17:13) [9]

Алгоритм RAR


 
Andrew   (2003-08-28 17:16) [10]

Мне необходим динамический процесс через поток прямо в программе.
Я имел в виду - какой из файловых форматов более подходит к решаемой в этом обсуждении проблеме.
RAR - не в тему, извините.


 
Reindeer Moss Eater   (2003-08-28 17:25) [11]

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


 
Andrew   (2003-08-28 18:48) [12]

фото детей для медицинской карты.


 
Dimka Maslov   (2003-08-28 19:06) [13]

У меня же сказано: не нужно писать
Image1.Picture.Bitmap.Assign(JPEGImage)

И вообще фотографии достаточно сохранить в жпег один раз, а потом только читать.


 
Reindeer Moss Eater   (2003-08-29 08:45) [14]

фото детей для медицинской карты.
Значит уже есть исходные фотодокументы в каком-то формате?
Почему бы не передавать их в этом формате?



Страницы: 1 вся ветка

Форум: "Media";
Текущий архив: 2003.12.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.007 c
7-99800
Talla2k
2003-10-23 01:49
2003.12.30
тормоза потока


1-99566
Fast
2003-12-17 18:41
2003.12.30
MetaFile и PreView


14-99705
Dimaz-z
2003-12-09 14:12
2003.12.30
Будущее Delphi в целом.


3-99454
ZSergey
2003-12-07 15:53
2003.12.30
Как передать зн. переменной в отчет QReport?


3-99491
md
2003-12-04 16:42
2003.12.30
Фон в DBGrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский