Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.12;
Скачать: CL | DM;

Вниз

Размер Access и JPEG   Найти похожие ветки 

 
kirilllius   (2004-11-14 00:50) [0]

Мастера, объясните такую ситуацию. У меня в базе 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;


 
DrPass ©   (2004-11-14 02:10) [1]

Скорее всего, Access выделяет место под BLOB-поля не по их размеру, а по страницам. Ну а чему там равен размер страницы по умолчанию - ХЗ


 
kirilllius   (2004-11-14 10:02) [2]

А можно ли изменить размер страницы под размер потока?


 
Shama_n ©   (2004-11-14 11:50) [3]

Ты загоняешь в поток не Jpeg а BitMap разумеется он занимает больше памяти чем Jpeg. Наверно нужно сам Jpeg файл в Blob сохранять, затем его считывать допустим на HDD и открывать в TImage. Может конечно можно и более красиво реализовать...


 
Shama_n ©   (2004-11-14 11:56) [4]

Пропробуй использовать это:
Jpeg: TJpegImage;
Jpeg.SaveToStream


 
sniknik ©   (2004-11-14 12:04) [5]

попробуй
ToImage.Bitmap.SaveToStream(Stream);
на
ToImage.Picture.Graphic.SaveToStream();
поменять.
(правда тогда со чтением в том виде что утебя сейчас проблемы будут ;о))


 
DrPass ©   (2004-11-14 12:08) [6]

Сорри, я даже код не глянул %)


 
kirilllius   (2004-11-14 23:14) [7]

Всем спасибо, особенно Shama_n. Действительно если грузить картинку через TJpegImage, то база не раздувается, а вырастает ровно на вес картинки. Большое спасибо.



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

Текущий архив: 2004.12.12;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.027 c
1-1101249250
Кто---то
2004-11-24 01:34
2004.12.12
Как отследить где именно возникает утечка памяти ?


4-1098782955
Aleksandr.
2004-10-26 13:29
2004.12.12
Почему DispatchMessage выдает AV?


1-1101887251
Майя
2004-12-01 10:47
2004.12.12
Закрытие OLe объекта


3-1100096254
Andriy Tysh
2004-11-10 17:17
2004.12.12
Как вывести отчёт КвикРепортом из КлиентДатаСета только те записи


3-1100522078
помаранчевий Жук
2004-11-15 15:34
2004.12.12
Парсинг строк - SQL