Fórum gravar imagem #269645

22/02/2005

0

bom dia!
Gostaria de saber, como consigo, pegar uma imagem, do componente image, e gravar no banco de dados?



Obrigado


Airto

Airto

Responder

Posts

22/02/2005

Massuda

Esta procedure copia uma imagem para um campo BLOB:
procedure SalvaImagemNoBlob(AImage: TImage; ABlob: TBlobField);
var
  Stream: TMemoryStream;
begin
  Stream := TMemoryStream.Create;
  try
    AImage.Picture.Bitmap.SaveToStream(Stream);
    Stream.Position := 0;
    ABlob.LoadFromStream(Stream);
  finally
    Stream.Free;
  end;
end;
Para copiar uma imagem em um TImage para um campo BLOB:
SalvaImagemNoBlob(SeuImage, SeuCampoBlob);



Responder

Gostei + 0

22/02/2005

Airto

estou usando o componente ahacquireimage, para scannear, quando e dado o post, para efetuar a gravaço esta retornando acess violation 40003C52, o bde já alterei o blobs to cache para 10000 e blobs do size para 10000

teria um outro problema?

Obrigado


Responder

Gostei + 0

22/02/2005

Technos

Amigo, eu aconselho voce gravar o caminho para essas imagens.

Tipow, uma string sacou ?
É Melhor, mais fácil e mais rápido, além de nao sobrecarregar o BD com imagens grandes.

Apenas o caminho, pensse nisso.
Se tiver dúvidas, fala aee que agente resolve.

Technos :D


Responder

Gostei + 0

22/02/2005

Massuda

estou usando o componente ahacquireimage, para scannear, quando e dado o post, para efetuar a gravaço esta retornando acess violation 40003C52...
Você poderia postar o código que você está usando e, se possível, indicar onde está ocorrendo o erro?


Responder

Gostei + 0

22/02/2005

Tnaires

Esta procedure copia uma imagem para um campo BLOB:
procedure SalvaImagemNoBlob(AImage: TImage; ABlob: TBlobField);
var
  Stream: TMemoryStream;
begin
  Stream := TMemoryStream.Create;
  try
    AImage.Picture.Bitmap.SaveToStream(Stream);
    Stream.Position := 0;
    ABlob.LoadFromStream(Stream);
  finally
    Stream.Free;
  end;
end;
Para copiar uma imagem em um TImage para um campo BLOB:
SalvaImagemNoBlob(SeuImage, SeuCampoBlob);

Caro Massuda, para quais tipos de imagem esse código é válido?
Abraços


Responder

Gostei + 0

22/02/2005

Tnaires

Afe Maria, eu e essa minha mania d perguntar antes d pensar...
Respondendo a minha pergunta :oops: , esse código é válido para os tipos d imagem q um componente TImage suporta. Ou seja, nada feito para JPEGs, GIFs ou PNGs...
Se alguém souber algum código para salvar qq tipo d imagem, pelamordedeus divulgue no fórum...


Responder

Gostei + 0

22/02/2005

Massuda

Afe Maria, eu e essa minha mania d perguntar antes d pensar...
Acontece nas melhores famílias! :lol:

Se alguém souber algum código para salvar qq tipo d imagem, pelamordedeus divulgue no fórum...
Se não me engano, para ter suporte a JPEG, basta incluir a unit JPEG (ou JPG?) no uses da sua unit. Essa unit costuma vir no CD do Delphi (mas não faz parte da instalação normal) e está (acho) no diretório Extras.

Para outros formatos, experimente usar a biblioteca [url=http://www.soft-gems.net/Graphics.php#GraphicEx]GraphicEx[/url] (freeware com source).

Em ambos os casos, basta incluir as units no uses de sua unit, que automagicamente o TImage passa a suportar novos formatos de imagens.


Responder

Gostei + 0

23/02/2005

Airto

o problema e o seguinte....scaneo a nota fiscal, no formato jpg, até funcionando normal...na hora de executar o post, que retorna o acess violation,

quando não gravo a imagem, so os demais campos,,,grava normal, quando tento gravar a imagem que retorna o erro?

Obrigado


Responder

Gostei + 0

23/02/2005

Massuda

... na hora de executar o post, que retorna o acess violation ...
AV geralmente ocorre se você estiver tentando usar um objeto que já não existe ou que ainda não foi criado. Por exemplo, quando você tenta postar a imagem no DB, o componente que contem a imagem ainda existe?

Será que você poderia postar o código para que todos possam dar uma olhada?


Responder

Gostei + 0

23/02/2005

Aroldo Zanela

Colega,

Qual é o banco de dados que você está utilizando? Acredito que seu problema está em visualizar a imagem e não em armazenar, pois o objeto TField encapsula toda a ´complexidade´ para a gravação por meio dos métodos LoadFrom<X>. A Jedi VCL possui diversos componentes para manipular vários formatos de imagens (conversão e visualização). A propósito, a JPEG.DCU fica no diretório LIB padrão.


Responder

Gostei + 0

23/02/2005

Kapak

Experimente utilizar SaveToStream de TGraphic e não TBitmap.
Troque:
Picture.Bitmap.SaveToStream
por:
Picture.Graphic.SaveToStream


Responder

Gostei + 0

30/03/2005

Gustavo_pacheco

A Jedi VCL possui diversos componentes para manipular vários formatos de imagens (conversão e visualização).


Alguma dica de qual componente utilizar?


Responder

Gostei + 0

30/03/2005

Gustavo_pacheco

Sobe


Responder

Gostei + 0

04/04/2005

Gustavo_pacheco

Sobe


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar