Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Сохранить в базе картинку формата JPEG

Delphi , Базы данных , База данных

Сохранить в базе картинку формата JPEG

Автор: Nomadic

Я делал так (это кусок компонента):


if Picture.Graphic is TJPegImage then
begin
  bs:=TBlobStream.Create(TBlobField(Field),bmWrite);
  Picture.Graphic.SaveToStream(bs);
  bs.Free;
end
else if Picture.Graphic is TBitmap then
begin
  Jpg:=TJPegImage.Create;
  Jpg.CompressionQuality:=...;
  Jpg.PixelFormat:=...;
  Jpg.Assign(Picture.Graphic);
  Jpg.JPEGNeeded;
  bs:=TBlobStream.Create(TBlobField(Field),bmWrite);
  Jpg.SaveToStream(bs);
  bs.Free;
  Jpg.Free;
end 
else 
  Field.Clear; 

Here's the translation of the text into Russian:

Код, который вы предоставили, используется для сохранения изображения в базе данных. Он проверяет, является ли изображение типом TJPegImage или TBitmap, и затем сохраняет его соответственно.

Вот как это работает:

  1. Если изображение имеет тип TJPegImage, код создает объект TBlobStream, сохраняет изображение в поток с помощью метода SaveToStream и затем освобождает поток.
  2. Если изображение имеет тип TBitmap, код конвертирует битовое изображение в JPEG-изображение, присваивая битовое изображение объекту TJPegImage, сохраняя его в потоке, и затем освобождает оба JPEG-изображения и поток.

Вот некоторые предложения по улучшению кода:

  1. Вместо проверки, является ли изображение типом TJPegImage или TBitmap, вы могли бы проверить, является ли изображение объектом TGraphic, который является предшественником классов TJPegImage и TBitmap. Это позволит вам написать более общий код, который может обрабатывать любое графическое изображение.
  2. Вам может быть полезно добавить обработку ошибок в ваш код. Например, что если изображение не может быть сохранено за какую-то причину? Ваш код не проверяет ошибки при сохранении изображения или создании потока.

Вот обновленная версия кода с этими предложениями:

if Picture.Graphic is TGraphic then
begin
  bs := TBlobStream.Create(TBlobField(Field), bmWrite);
  try
    Picture.Graphic.SaveToStream(bs);
  finally
    bs.Free;
  end;
else
  Field.Clear;

В этой версии мы создаем поток в блоке try и затем освобождаем его в блоке finally. Это обеспечивает, что поток будет всегда освобожден, даже если возникает исключение при сохранении изображения.

Также обратите внимание, что я удалил код для конвертации TBitmap в TJPegImage, потому что можно просто сохранять битовое изображение напрямую без необходимости конвертировать его сначала.

Код на Delphi показывает, как сохранять картинки формата JPEG в базе данных, используя классы TJPegImage и TBlobStream.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: База данных ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100

Время компиляции файла: 2024-05-19 17:53:24
2024-05-19 22:57:54/0.0019829273223877/0