Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
rodrigo23 Novato
Registrado: Quarta-Feira, 9 de Fevereiro de 2011 Mensagens: 53
|
Enviada: Qui Mar 30, 2017 7:31 am Assunto: JPEG error #53 Delphi 7 |
|
|
Olá,
Estou trabando com o seguinte trecho de código abaixo para carregar uma imagem salva, porem no delphi xe7 funciona e agora no delphi 7 me mostra a mensagem de erro "JPEG ERROR #53".
Alguem poderia me ajudar a tentar corrigir para que funcione no delphi 7 tbm.
{ Cria objeto do tipo TJPEG, e objeto do tipo MemoryStream}
vJpeg := TJPEGImage.Create;
vStream := TMemoryStream.Create;
{ Trata o campo como do tipo BLOB e salva o seu conteudo na memória. }
TBlobField(Modulo1.Q_Imagem.FieldByName('foto')).SaveToStream(vStream);
{ Ajusta a posicao inicial de leitura da memória }
vStream.Position := 0;
{ Carrega da memoria os dados, para uma estrutura do tipo TJPEG
(A partir da posicao 0)}
vJpeg.LoadFromStream(vStream);
{ Exibe o jpg no Timage. }
Image2.Picture.Assign(vJpeg);
{ Libera a memoria utilizada pelos componentes de conversão }
vJpeg.Free;
vStream.Free;
Obrigado |
|
Voltar ao Topo |
|
|
joemil Moderador
Registrado: Quinta-Feira, 25 de Março de 2004 Mensagens: 9098 Localização: Sinop-MT
|
Enviada: Qui Mar 30, 2017 9:03 am Assunto: |
|
|
ja pesquisou no google? tvz seja o formato do arquivo.
tenta abrir no paint e salvar novamente pra ver se corrige _________________ <b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/ |
|
Voltar ao Topo |
|
|
conorte Experiente
Registrado: Quinta-Feira, 8 de Mai de 2014 Mensagens: 406 Localização: Porto Alegre/RS
|
Enviada: Qui Mar 30, 2017 10:04 am Assunto: |
|
|
Olá!
Eu tive este mesmo problema dias atrás.
Por não ter muito tempo, preferi usar o caminho descrito no banco. _________________ Luciano Moraes
1º curso de Pascal em 1998. |
|
Voltar ao Topo |
|
|
natanbh1 Colaborador
Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 3093 Localização: Belo Horizonte - MG
|
Enviada: Qui Mar 30, 2017 10:30 am Assunto: |
|
|
Adicionou JPEG na uses do form?
Verifique se a imagem que você está tentando carregar realmente é um JPEG.
Se você tentar carregar um arquivo de outra extensão para uma variável do tipo JPEG pode ocorrer este erro. _________________ ''A persistência é o caminho para o êxito.''
Charlie Chaplin |
|
Voltar ao Topo |
|
|
conorte Experiente
Registrado: Quinta-Feira, 8 de Mai de 2014 Mensagens: 406 Localização: Porto Alegre/RS
|
Enviada: Qui Mar 30, 2017 10:46 am Assunto: |
|
|
Olá!
Não quero me entremeter no negócio do autor, mas aconteceu o mesmo comigo.
Gravei a imagem pelo Delphi mesmo e me deu este mesmo erro. Pensei em postar aqui. Consultei alguns casos aqui mas preferi descontinuar isto.
A propósito, a imagem era jpg. _________________ Luciano Moraes
1º curso de Pascal em 1998. |
|
Voltar ao Topo |
|
|
conorte Experiente
Registrado: Quinta-Feira, 8 de Mai de 2014 Mensagens: 406 Localização: Porto Alegre/RS
|
Enviada: Qui Mar 30, 2017 11:50 am Assunto: |
|
|
Desculpe-me insistir mas, não me lembro de declarar
a unit jpeg, ou de ler sobre isto em minhas
pesquisas. Mas detalhando o que fiz, foi criar um campo blob
no Interbase. E pelo Delphi gravei a imagem com um dbMemo.
A imagem é jpg, mas fica registrada sem extensão no banco, como
eu entendo.
Apesar de descontinuar isto, pois tomei um pau desg#@%&*,
eu gostaria ainda de voltar a usar isto. _________________ Luciano Moraes
1º curso de Pascal em 1998. |
|
Voltar ao Topo |
|
|
johnny-walker Moderador
Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Qui Mar 30, 2017 1:41 pm Assunto: |
|
|
Realmente é necessário adicionar a unit jpeg junto a blioteca na cláusula uses.
bye _________________ P.O.W.E.R B.Y D.E.L.P.H.I |
|
Voltar ao Topo |
|
|
conorte Experiente
Registrado: Quinta-Feira, 8 de Mai de 2014 Mensagens: 406 Localização: Porto Alegre/RS
|
Enviada: Qui Mar 30, 2017 4:13 pm Assunto: |
|
|
Sendo assim, vou testar e posto o resultado aqui. Agradecido. _________________ Luciano Moraes
1º curso de Pascal em 1998. |
|
Voltar ao Topo |
|
|
strak2012 Colaborador
Registrado: Segunda-Feira, 13 de Janeiro de 2014 Mensagens: 1518 Localização: Maceió - AL
|
Enviada: Qui Mar 30, 2017 4:44 pm Assunto: |
|
|
JPEG error #53, provavelmente a unit jpeg ja foi declarada pois é um erro de tratamento da propria unit.
Em resumo a imagem estaria suportamente corrupida e invalidou seu carregamento. É provavel que o stream até possuia a imagem na intigra, mas que na hora de carregar com o loadstream este mesmo stream esteja sofrende alteração.
No passado resolvia a qestão da seguinte forma.
Salvava o stream num arquivo com o a extrenção *.jpg, em seguida carregava este arquivo *.jpg atrave do timagem normalmente e por fim até poderia delatar o arquivo.
Vale apenas conferir. _________________ Tudo podemos quando tudo sabemos! |
|
Voltar ao Topo |
|
|
conorte Experiente
Registrado: Quinta-Feira, 8 de Mai de 2014 Mensagens: 406 Localização: Porto Alegre/RS
|
Enviada: Qui Mar 30, 2017 4:50 pm Assunto: |
|
|
Olá!
Como eu disse, eu gravei a imagem com o auxílio de um componente TDBMemo. Ao consultar o registro, a imagem aparece normalmente. Quer dizer que no banco está bem. Se a imagem "estivesse ruim" nem apareceria na consulta do registro, penso eu. _________________ Luciano Moraes
1º curso de Pascal em 1998. |
|
Voltar ao Topo |
|
|
conorte Experiente
Registrado: Quinta-Feira, 8 de Mai de 2014 Mensagens: 406 Localização: Porto Alegre/RS
|
Enviada: Qui Mar 30, 2017 4:55 pm Assunto: |
|
|
Mas strak2012, acho que é isso mesmo que o autor do tópico está fazendo. (conforme você deu o exemplo do passado). _________________ Luciano Moraes
1º curso de Pascal em 1998. |
|
Voltar ao Topo |
|
|
strak2012 Colaborador
Registrado: Segunda-Feira, 13 de Janeiro de 2014 Mensagens: 1518 Localização: Maceió - AL
|
Enviada: Qui Mar 30, 2017 5:22 pm Assunto: |
|
|
conorte escreveu: | Olá!
Como eu disse, eu gravei a imagem com o auxílio de um componente TDBMemo. Ao consultar o registro, a imagem aparece normalmente. Quer dizer que no banco está bem. Se a imagem "estivesse ruim" nem apareceria na consulta do registro, penso eu. |
Me parece que não, quando usado um campo blob ou outro similar me parece que a imagem não vai toda na intigra para o banco e sim a class TGraphic é que vai ser armazenada juntamente com seu conteudo, que por sua vez pode possuir alguma referencia do tipo de imagem que estar em seu conteudo Só que TGraphic não é um TJPEGImage e és onde muitas das vezes se encontra o problema.
O melhor é tratar tudo com TGraphic momento antes do LoadFromStream. _________________ Tudo podemos quando tudo sabemos! |
|
Voltar ao Topo |
|
|
strak2012 Colaborador
Registrado: Segunda-Feira, 13 de Janeiro de 2014 Mensagens: 1518 Localização: Maceió - AL
|
Enviada: Qui Mar 30, 2017 9:59 pm Assunto: |
|
|
outra solução é testar realmente se a imagem no stream é de fato um jpeg desta forma deixo a forma de verificar isso;
Código: |
// uses
// Vcl.Imaging.jpeg, Vcl.Imaging.pngimage, Vcl.Imaging.GIFImg -> para delphis recente
// jpeg, pngimage, GIFImg -> para delphis antigos
var
vStream: TMemoryStream;
ImageJPG: TJPEGImage;
ImageBMP: Tbitmap;
ImagePNG: TPngImage;
ImageGIF: TGIFImage;
Header: array [0 .. 9] of byte;
StrHeader: string;
I: integer;
begin
vStream := TMemoryStream.Create;
TBlobField(Modulo1.Q_Imagem.FieldByName('foto')).SaveToStream(vStream);
vStream.Position := 0;
vStream.ReadBuffer(Header, length(Header));
vStream.Position := 0;
StrHeader := '';
for I := Low(Header) to High(Header) do
if (Header[I] >= 32) and (Header[I] <= 128) then
StrHeader := StrHeader + char(Header[I]);
if pos('JFIF', StrHeader) <> 0 then // arquivo ImageJPG, JPEG
begin
ImageJPG := TJPEGImage.Create;
ImageJPG.LoadFromStream(vStream);
Image2.Picture.Assign(ImageJPG);
ImageJPG.free;
end;
if pos('PNG', StrHeader) <> 0 then // arquivo ImagePNG
begin
ImagePNG := TPngImage.Create;
ImagePNG.LoadFromStream(vStream);
Image2.Picture.Assign(ImagePNG);
ImagePNG.free;
end;
if pos('GIF', StrHeader) <> 0 then // arquivo ImageGIF
begin
ImageGIF := TGIFImage.Create;
vStream.LoadFromStream(vStream);
Image2.Picture.Assign(ImageGIF);
ImageGIF.free;
end;
if pos('BM', StrHeader) <> 0 then // arquivo ImageBMP
begin
ImageBMP := Tbitmap.Create;
ImageBMP.LoadFromStream(vStream);
Image2.Picture.Assign(ImageBMP);
ImageBMP.free;
end;
Image2.Repaint;
Image2.Refresh;
end; |
_________________ Tudo podemos quando tudo sabemos! |
|
Voltar ao Topo |
|
|
strak2012 Colaborador
Registrado: Segunda-Feira, 13 de Janeiro de 2014 Mensagens: 1518 Localização: Maceió - AL
|
Enviada: Qui Mar 30, 2017 10:00 pm Assunto: |
|
|
Assim sendo se o campo blob for do tipo jpeg, bmp, png ou gif não terá problema em exibir tais imagens. _________________ Tudo podemos quando tudo sabemos! |
|
Voltar ao Topo |
|
|
conorte Experiente
Registrado: Quinta-Feira, 8 de Mai de 2014 Mensagens: 406 Localização: Porto Alegre/RS
|
Enviada: Sex Mar 31, 2017 10:07 am Assunto: |
|
|
Obrigado strak2012. Pela manhã cedo li o seu último post.
Porque eu não vi ontem a noite o seu post? Que droga.
Notei que você usa SaveToStream. Então lembrei que eu uso
LoadToStream. Na correria não vi que o autor também
usa o mesmo que você.
Vou tentar depois usando o que você sugeriu mas com LoadFromStream
(ou LoadToStream, não lembro agora).
A propósito, eu já tinha pesquisado algo do tipo da sua sugestão. _________________ Luciano Moraes
1º curso de Pascal em 1998. |
|
Voltar ao Topo |
|
|
|