![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сохранение картинки в файл: БитМап VS Jpeg [D6, WinXP]
Игоръ © (2004-11-18 11:28:00)Возникла проблема - необходимо сохранять картинки (TImage), которые создает программа.
Я нашел стандартную процедуру myImage.Picture.SaveToFile(FileName), НО так как у меня очень большие размеры картинок, то картинки занимают очень много места (до 30Mb/картинка). А картинок мне надо сотни... Вообщем 30Гб забивается за 6 часов.
Вчера в форуме мне посоветовали TJpegImage.
Я создал процедуру:
procedure TmyForm.Save_Jpeg (Sender: Tobject; sPATH : string);
var jpg : TJPEGImage;
begin
jpg := TJPEGImage.Create;
jpg.CompressionQuality := jpgQual;
jpg.Assign((Sender as TImage).Picture.Bitmap);
jpg.SaveToFile(sPATH);
jpg.Free;
end;
И тут обнаружилась проблема - Время. По сравнению с обычным сохранением у меня каждый шаг просчитывает в 2 раза дольше.
Я связываю это сjpg.Assign. Как я понял программа держит в памяти картинку присвоенную с помощью Assign, а так как картинка большая - это занимает время.
Что можно придумать???
Если использовать стандартную процедуру мне необходимо ГигаБайты HDD, а если JPEG, то программа считает вместо 10-12 часов более суток.
Amoeba (2004-11-18 11:39:00) [1]
> Может без потери качества достаточно 4битовой глубины вместо
> 32битовой?
16 цветов, скорее всего будет маловато. А насчет 8-битовой глубины (256 цветов) определенно стоило бы подумать.
ЮЮ (2004-11-18 11:34:00) [2]jpg.SaveToFile(sPATH); т.к. картинка преобразуется в jpg, то это тоже требует время.
А ты чего хотел? Или время или дисковое пространство?
А что за картинки? Может без потери качества достаточно 4битовой глубины вместо 32битовой?
Amoeba (2004-11-18 11:31:00) [3]К сожалению, за все приходится платить: за меньший объем - большим временем, а за меньшее время - большим объемом. Своего рода "закон сохранения".