• 0
Авторизация  
walexw

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

Вопросы

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

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

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

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

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

Пишу на RAD XE 10

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

Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 ответа на этот вопрос

  • 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...).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

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

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