Перейти к содержанию
Fire Monkey от А до Я
  • 0

Записать картинку с камеры в BLOB


walexw

Вопрос

В форуме есть косвенно похожая тема, но у меня немного другое.

Впервые столкнулся с вопросом записи фото с камеры в базу.

Мне нужно в приложении (для андроида) иметь возможность по кнопке (или еще как)

вызвать камеру, сделать снимок, уменьшить его до нужного размера (например до 0.5 Мб)

и вставить его в BLOB-поле БД (SQLite)

Пишу на RAD XE 10

Если у кого есть решение (хотя-бы близкое), поделитесь plz. или дайте ссылку где посмотреть.

Спасибо.

Ссылка на комментарий

Рекомендуемые сообщения

  • 2

Вот пример того, как писать и читать BLOB

procedure SaveToFireDACBlob;
var
  MemStream: TMemoryStream;
begin

FireDAC.Connected := True;
MemStream := TMemoryStream.Create;

try
  Image1.Bitmap.SaveToStream(MemStream);
  MemStream.Seek(0,0);
  FDQueryInsert.ParamByName('Media').LoadFromStream(MemStream,ftBlob);
  FDQueryInsert.ParamByName('MType').AsString := '0';
  FDQueryInsert.ExecSQL();
except
  
  on e: Exception do begin
    ShowMessage(e.Message);
  end;

end;

MemStream.Free;
FireDAC.Connected := False;

end;
 
procedure LoadFromFireDACBlob;
var
  BlobStream: TStream;
begin

FireDAC.Connected := True;

try
  FDQuerySelect.Open;
  FDQuerySelect.First;

  while(not FDQuerySelect.EOF)do begin
    // access a stream from a blob like this
    BlobStream := FDQuerySelect.CreateBlobStream(FDQuerySelect.FieldByName('Media'),TBlobStreamMode.bmRead);
    // access a string from a field like this
    
    if (FDQuerySelect.FieldByName('MType').AsString='0') then begin
      // load your blob stream data into a control
      ImageViewer.Bitmap.LoadFromStream(BlobStream);
    end;

    BlobStream.Free;
    FDQuerySelect.Next;
  end;

except
  
  on e: Exception do begin
    //ShowMessage(e.Message);
  end;

end;

FireDAC.Connected := False;

end;

{источник http://www.fmxexpress.com/read-and-write-a-blob-field-using-firedac-with-firemonkey-on-android-and-ios/}

Касательно работы с изменением качества/размера, считаю что необходимо использовать TBitmapSurface  (unit FMX.Surfaces)

Изменено пользователем ophion
Ссылка на комментарий
  • 0
В 11.02.2016 в 18:03, ophion сказал:

Вот пример того, как писать и читать BLOB

Друже! Ты прекратил мои мучения. Ибо всякие извращения с обращением Query.Fields('lalala').AsBytes и тому подобное приводили к AV на закрытии Query.
При этом тип поля - TVarBytesField (почему-то именно так распознается VARBINARY в SQLite...).

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...