Форум: "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