![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Размер Access и JPEG [D6, Access]
kirilllius © (2004-11-14 00:50:00)Мастера, объясните такую ситуацию. У меня в базе Access есть OLE (Blob) поле. Я гружу туда JPEG изображение.
Загрузка - Считал файл в поток, скинул поток в Blob поле.
Чтение – Читаю данные из Blob поля в поток, из потока скидываю в TImage.
Но дело в том, что база растет непропорционально. Допустим, база у меня 5,5 Мб. Я вставляю в нее 22 изображения на общий вес 290 Кбайт. Но база вырастает не до 5,8 Мб, а до 13 Мб. Проводил сжатие базы в Access получил 11 Мб, но не как 5,8 Мб. Подскажите, в чем проблема, может я неправильно загоняю JPEG в базу?
//**********************************
//кнопка добавить изображение
//************************************
procedure TfrmMain.butAversEdtClick(Sender: TObject);
procedure LoadImg(Field: TBLOBField; FileName: String; ToImage:TImage32);
var Stream: TStream;
begin
try
ToImage.Bitmap.LoadFromFile(FileName);
Stream:= TMemoryStream.Create;
ToImage.Bitmap.SaveToStream(Stream);
Stream.Position := 0;
tabMoneta.Edit;
Field.LoadFromStream(Stream);
tabMoneta.Post;
finally
Stream.Free;
end;
end;
begin
LoadImg(TBLOBField(tabMoneta.FieldByName('Avers')), FileName,imgAvers);
end;
kirilllius (2004-11-14 23:14:00) [1]Всем спасибо, особенно Shama_n. Действительно если грузить картинку через TJpegImage, то база не раздувается, а вырастает ровно на вес картинки. Большое спасибо.
DrPass (2004-11-14 12:08:00) [2]Сорри, я даже код не глянул %)
sniknik (2004-11-14 12:04:00) [3]попробуй
ToImage.Bitmap.SaveToStream(Stream);
на
ToImage.Picture.Graphic.SaveToStream();
поменять.
(правда тогда со чтением в том виде что утебя сейчас проблемы будут ;о))
Shama_n (2004-11-14 11:56:00) [4]Пропробуй использовать это:
Jpeg: TJpegImage;
Jpeg.SaveToStream
Shama_n (2004-11-14 11:50:00) [5]Ты загоняешь в поток не Jpeg а BitMap разумеется он занимает больше памяти чем Jpeg. Наверно нужно сам Jpeg файл в Blob сохранять, затем его считывать допустим на HDD и открывать в TImage. Может конечно можно и более красиво реализовать...
kirilllius (2004-11-14 10:02:00) [6]А можно ли изменить размер страницы под размер потока?
DrPass (2004-11-14 02:10:00) [7]Скорее всего, Access выделяет место под BLOB-поля не по их размеру, а по страницам. Ну а чему там равен размер страницы по умолчанию - ХЗ