ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

JPEG error #53 Delphi 7
Ir à página 1, 2  Próximo
 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
rodrigo23
Novato
Novato


Registrado: Quarta-Feira, 9 de Fevereiro de 2011
Mensagens: 53

MensagemEnviada: Qui Mar 30, 2017 7:31 am    Assunto: JPEG error #53 Delphi 7 Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
joemil
Moderador
Moderador


Registrado: Quinta-Feira, 25 de Março de 2004
Mensagens: 9098
Localização: Sinop-MT

MensagemEnviada: Qui Mar 30, 2017 9:03 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
conorte
Experiente
Experiente


Registrado: Quinta-Feira, 8 de Mai de 2014
Mensagens: 406
Localização: Porto Alegre/RS

MensagemEnviada: Qui Mar 30, 2017 10:04 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
natanbh1
Colaborador
Colaborador


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 3093
Localização: Belo Horizonte - MG

MensagemEnviada: Qui Mar 30, 2017 10:30 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
conorte
Experiente
Experiente


Registrado: Quinta-Feira, 8 de Mai de 2014
Mensagens: 406
Localização: Porto Alegre/RS

MensagemEnviada: Qui Mar 30, 2017 10:46 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
conorte
Experiente
Experiente


Registrado: Quinta-Feira, 8 de Mai de 2014
Mensagens: 406
Localização: Porto Alegre/RS

MensagemEnviada: Qui Mar 30, 2017 11:50 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10653
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Qui Mar 30, 2017 1:41 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
conorte
Experiente
Experiente


Registrado: Quinta-Feira, 8 de Mai de 2014
Mensagens: 406
Localização: Porto Alegre/RS

MensagemEnviada: Qui Mar 30, 2017 4:13 pm    Assunto: Responder com Citação

Sendo assim, vou testar e posto o resultado aqui. Agradecido.
_________________
Luciano Moraes
1º curso de Pascal em 1998.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
strak2012
Colaborador
Colaborador


Registrado: Segunda-Feira, 13 de Janeiro de 2014
Mensagens: 1518
Localização: Maceió - AL

MensagemEnviada: Qui Mar 30, 2017 4:44 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
conorte
Experiente
Experiente


Registrado: Quinta-Feira, 8 de Mai de 2014
Mensagens: 406
Localização: Porto Alegre/RS

MensagemEnviada: Qui Mar 30, 2017 4:50 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
conorte
Experiente
Experiente


Registrado: Quinta-Feira, 8 de Mai de 2014
Mensagens: 406
Localização: Porto Alegre/RS

MensagemEnviada: Qui Mar 30, 2017 4:55 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
strak2012
Colaborador
Colaborador


Registrado: Segunda-Feira, 13 de Janeiro de 2014
Mensagens: 1518
Localização: Maceió - AL

MensagemEnviada: Qui Mar 30, 2017 5:22 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
strak2012
Colaborador
Colaborador


Registrado: Segunda-Feira, 13 de Janeiro de 2014
Mensagens: 1518
Localização: Maceió - AL

MensagemEnviada: Qui Mar 30, 2017 9:59 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
strak2012
Colaborador
Colaborador


Registrado: Segunda-Feira, 13 de Janeiro de 2014
Mensagens: 1518
Localização: Maceió - AL

MensagemEnviada: Qui Mar 30, 2017 10:00 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
conorte
Experiente
Experiente


Registrado: Quinta-Feira, 8 de Mai de 2014
Mensagens: 406
Localização: Porto Alegre/RS

MensagemEnviada: Sex Mar 31, 2017 10:07 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Ir à página 1, 2  Próximo
Página 1 de 2

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB