COMO EXIBIR NO HARBOUR IMAGEM

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Abel
Usuário Nível 3
Usuário Nível 3
Mensagens: 332
Registrado em: 14 Mar 2012 13:16
Localização: sao paulo / sp

COMO EXIBIR NO HARBOUR IMAGEM

Mensagem por Abel »

Ola pessoal,
uma api do whatsapp que estou usando me devolve um endereço com a imagem do perfil no whatsapp

exemplo:
https://pps.whatsapp.net/v/t61.24694-24 ... e=6499E5B5

agora como eu exibo a imagem desse endereco no harbour ?

se alguem puder me ajudar
desde ja agradeço.

ABEL
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

COMO EXIBIR NO HARBOUR IMAGEM

Mensagem por JoséQuintas »

renomeei pra PNG e o Windows mostrou, mas na hora de postar aqui, o fórum reclamou que foi detectado JPG com extensão inválida.
Não sei se vai ser sempre JPG.
A partir daí, qualquer lib que mostre JPG.
image.jpg
Por exemplo, GTWVG.
E aceitou o nome com extensão original.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Abel
Usuário Nível 3
Usuário Nível 3
Mensagens: 332
Registrado em: 14 Mar 2012 13:16
Localização: sao paulo / sp

COMO EXIBIR NO HARBOUR IMAGEM

Mensagem por Abel »

JoseQuintas,

como vc conseguiu fazer o download pelo harbour gerando o arquivo file.enc ?
Abel
Usuário Nível 3
Usuário Nível 3
Mensagens: 332
Registrado em: 14 Mar 2012 13:16
Localização: sao paulo / sp

COMO EXIBIR NO HARBOUR IMAGEM

Mensagem por Abel »

Josequintas,

tambem nao consegui usar a wvt_drawimage em um jpg ja salvo.
complila sem dar erro, mas quando o programa abre, ela ja da erro

"programa.exe parou de funcionar" e fecha

sera que ta faltando alguma lib na compilacao ?

tentei tambem com wvg_image tambem sem sucesso.


ABEL
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

COMO EXIBIR NO HARBOUR IMAGEM

Mensagem por JoséQuintas »

Código: Selecionar todos

#include "inkey.ch"
#include "directry.ch"
#include "hbgtinfo.ch"

REQUEST HB_CODEPAGE_PTISO

PROCEDURE Main

   SET EVENTMASK TO INKEY_ALL - INKEY_MOVE
   Set( _SET_CODEPAGE, "PTISO" )

   SetMode(36,132)
   SetColor( "W/B" )
   CLS

   wvt_DrawImage( 5, 5, 10, 20, "file.enc" )
   INkey(0)

   RETURN

PROCEDURE HB_GTSYS

   REQUEST HB_GT_WVG_DEFAULT

   RETURN
É importante primeiro criar a janela, isso é feito no CLS.

O download poderia ser hbtip ou xmlhttp da microsoft.
Nem considerei essa parte importante, porque download é coisa comum.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Abel
Usuário Nível 3
Usuário Nível 3
Mensagens: 332
Registrado em: 14 Mar 2012 13:16
Localização: sao paulo / sp

COMO EXIBIR NO HARBOUR IMAGEM

Mensagem por Abel »

JoseQuintas,

acho q estou com um problema sério de algumas definicoes
e gerando conflitos entre wvg x wvt

veja como esta o inicio do meu programa principal
#include "hbgtinfo.ch"
#include "hbcompat.ch"

REQUEST HB_LANG_PT
REQUEST HB_CODEPAGE_PT850
REQUEST HB_GT_WVT
REQUEST HB_GT_WGU
REQUEST HB_GT_WVG

FUNCTION MAIN( )
clear
.....
MINHA HB_GTSYS esta assim:
Function HB_GTSYS()
REQUEST HB_GT_WVT_DEFAULT
REQUEST HB_GT_WIN
//
REQUEST HB_LANG_PT
REQUEST HB_CODEPAGE_PT850
Return NIL
nao sei se devo colocar todos os REQUEST que estao no inicio do programa dentro da hb_gtsys()
se eu colocar HB_GT_WVG_DEFAULT na HB_GTSYS ele compila mas da erro ao abrir o exe "programa.exe parou de funcionar"
se eu tirar o HB_GT_WVT_DEFAULT da HB_GTSYS da erro nesse comando HB_GTINFO(HB_GTI_MAXIMIZED) argument error

Desde ja agradeço,
ABEL
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

COMO EXIBIR NO HARBOUR IMAGEM

Mensagem por JoséQuintas »

Se não vai de um jeito, vai de outro, com ou sem multithread:

Código: Selecionar todos

PROCEDURE JanelaWvg()

   hb_ThreadStart( { || test() } )
   RETURN

PROCEDURE Test

  hb_gtReload( "WVG" )
  SetMode(36,132)
   SetColor( "W/B" )
   CLS

   wvt_DrawImage( 5, 5, 10, 20, "file.enc" )
   INkey(0)
Tente também direto na janela WVT pra ver se vai, já que a função é wvt_, e sugere poder ser usada na wvt_.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

COMO EXIBIR NO HARBOUR IMAGEM

Mensagem por Jairo Maia »

Abel escreveu:#include "hbgtinfo.ch"
#include "hbcompat.ch"

REQUEST HB_LANG_PT
REQUEST HB_CODEPAGE_PT850
REQUEST HB_GT_WVT
REQUEST HB_GT_WGU
REQUEST HB_GT_WVG
Quando você usa REQUEST, todas as funções necessárias são agregadas a seu programa, e se você não as usa, elas se tornam "peso morto". É diferente de uma função em determinado .PRG que não é usada, então ela não é compilada, já chamndo pelo REQUEST elas são agregadas ao sistema.

Acho que você poderia deixar esse início apenas assim:

Código: Selecionar todos

#include "hbgtinfo.ch"
#include "hbcompat.ch"

REQUEST HB_LANG_PT
REQUEST HB_CODEPAGE_PT850

REQUEST HB_GT_WVG  // deixe somente o driver GT que vai usar...

FUNCTION MAIN( )
clear
.....
Abel escreveu:MINHA HB_GTSYS esta assim:
Deixe sua HB_GTSYS() apenas como o José sugeriu:

Código: Selecionar todos

PROCEDURE HB_GTSYS

   REQUEST HB_GT_WVG_DEFAULT

   RETURN
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

COMO EXIBIR NO HARBOUR IMAGEM

Mensagem por JoséQuintas »

Não Jairo, não fiz a sugestão, apenas mostrei um fonte pra montar o desenho, eu nem sabia o que ele usava.
Ele já mencionou que WVG dá erro para o que usa.

GTWVG - pra usar tela WVG
GTWVT - pra usar tela WVT
GTWGU - pra usar DIALOG da GTWVG, seria comportamento GUI
GTWIN - pra usar tela console, console mesmo, nem GTWVG nem GTWVT precisam dela, talvez pra forçar a errorsys modo console.

Cada GT vai usar sua própria janela, não é porque indicou que a janela vai aceitar tudo de uma vez.
GT_XXX_DEFAULT vai ser a padrão, chamada logo no início, como ponto de partida.
As outras, só se fizer uso de hb_gtReload() ou hb_gtLoad(), senão, não está usando pra nada, a não ser ocupar espaço no EXE, como o Jairo já mencionou.
Só lembrando: compilar com -mt pra multithread.

Acho que tem um comando pra maximizar tela, não precisa ser hb_gtInfo(), se for esse o motivo do travamento.

Detalhe: pra maximizar a janela, primeiro a janela precisa existir. Será que está na ordem certa?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

COMO EXIBIR NO HARBOUR IMAGEM

Mensagem por Jairo Maia »

JoséQuintas escreveu:Acho que tem um comando pra maximizar tela, não precisa ser hb_gtInfo(), se for esse o motivo do travamento.
Não José, o travamento dele está ocorrendo pelo conflito de dois drivers GT "conflitantes entre si". Deve-se escolher qual GT usar e usar tudo por esse driver, não misturar GTs, até porque não tem porque isso, mas se ele deseja isso (e não entendo a razão) deve-se tornar a GT a usar em determinado ponto a Default, e ao sair voltar a outra, e etc...

Ele está configurando um GT Default, e aqui estáo motivo do travamento (programa parou de funcionar):
REQUEST HB_GT_WVT_DEFAULT
REQUEST HB_GT_WIN
Ou usa a GT_WIN, ou usa a GT_WVT. Elas não conversam entre si. Ou ao tentar usar um comando da GT_WIN, torne a GT_WIN a DEFAULT, o programa para de funcionar se o DEFAULT é GT_WVT e tenta usar um comando da GT_WIN ou da GT_WVG.

Por isso acho melhor usar apenas uma, e fazer tudo com a escolhida.

OBS: No caso dele não serve a GT_WVT, ela não exibe figura. Ou ele usa a GT_WVG ou a GT_WIN para exibir figura.

OBS1: Sugiro o uso da GT_WVG, por ser a mais popular, e ter mais usuários dela facilitando a troca de experiências...
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
carlaoonline
Usuário Nível 3
Usuário Nível 3
Mensagens: 190
Registrado em: 24 Ago 2014 22:38
Localização: Porto Alegre-RS

COMO EXIBIR NO HARBOUR IMAGEM

Mensagem por carlaoonline »

Boa tarde!


... pegando uma carona :
JoséQuintas escreveu:  hb_gtReload( "WVG" )
Isso é pq é uma nova janela multihread?
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

COMO EXIBIR NO HARBOUR IMAGEM

Mensagem por JoséQuintas »

Isso cria uma nova janela, se não usar multithread a anterior fica aberta mas bloqueada, aguardando o término da atual.

hb_gtReload( "WVT" ), hb_gtReload( "WVG" ), hb_gtReload( "GTK" )

Correção: isso PREPARA pra usar outra janela.
A janela só vai ser criada se fizer @ say, CLS, etc.
Senão, pelo menos GTWVG, trabalha sem janela até mostrar alguma coisa.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

COMO EXIBIR NO HARBOUR IMAGEM

Mensagem por JoséQuintas »

Tem uma coisa interessante nisso:

Uso isso com HWGUI, substituindo GTGUI por GTWVG.
A GTWVG não precisa aparecer, assim como acontece com GTGUI.

GUI geralmente bloqueia o processo atual, então, usando isso entrego um processo novo só pra ela.
GTGUI não aceita multithread, mas GTWVG sim.
E assim, tudo convive funcionando junto.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

COMO EXIBIR NO HARBOUR IMAGEM

Mensagem por JoséQuintas »

teste.png

Código: Selecionar todos

#include "inkey.ch"
#include "hbgtinfo.ch"

REQUEST HB_CODEPAGE_PTISO

PROCEDURE Main

   LOCAL a := 10, GetList := {}

   SET EVENTMASK TO INKEY_ALL - INKEY_MOVE
   Set( _SET_CODEPAGE, "PTISO" )

   SetMode(36,132)
   SetColor( "W/B" )
   CLS
   @ 1, 0 SAY hb_gtInfo( HB_GTI_VERSION )
   @ 2, 0 SAY "teste:" GET a
   Rotina2()
   READ

   RETURN

FUNCTION Rotina2()

   LOCAL a := 10, GetList := {}, hgtAnt

   hGtAnt := hb_gtSelect()
   hb_gtReload( "WVG" )
   SetMode(36,132)
   SetColor( "W/B" )
   CLS
   @ 1, 0 SAY hb_gtInfo( HB_GTI_VERSION )
   @ 2, 0 SAY "teste:" GET a
   Rotina3()
   READ
   hb_gtSelect( hGtAnt )

   RETURN Nil

FUNCTION Rotina3()

   LOCAL a := 10, GetList := {}, hgtAnt

   hGtAnt := hb_gtSelect()
   hb_gtReload( "WVG" )
   SetMode(36,132)
   SetColor( "W/B" )
   CLS
   @ 1, 0 SAY hb_gtInfo( HB_GTI_VERSION )
   @ 2, 0 SAY "teste:" GET a
   READ
   hb_gtSelect( hGtAnt )

   RETURN Nil
Sem multithread.
O chato é que o foco pode retornar a qualquer janela anterior, mesmo a bloqueada.
Num caso desses o usuário já iria no reset, ou control-alt-del kkkk

Sem o hgtAnt := hb_gtSelect(), a janela anterior some, mas parece que volta depois. Pode ser interessante confirmar o comportamento.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Abel
Usuário Nível 3
Usuário Nível 3
Mensagens: 332
Registrado em: 14 Mar 2012 13:16
Localização: sao paulo / sp

COMO EXIBIR NO HARBOUR IMAGEM

Mensagem por Abel »

ola, consegui fazer o que eu queria graças as dicas de JoseQuintas e o Jairo.
Muito Obrigado !!!

agora so tenho mais uma dificuldade, não consegui baixar o jpg com o link do whatsapp que recebo da API

ficou assim a parte de exibiçao da foto em janela separada
CASE rA_TECLA=88 .OR. rA_TECLA=120 // X
hGtAnt := hb_gtSelect()
//
HB_GTRELOAD("WVG")
SETMODE(12,30)
CLS
HB_GtInfo( HB_GTI_WINTITLE, PRISEG_NOME(ALUNO->NOME) )
wvt_DrawImage( 0, 0, 10, 30, "logo.jpg" )
@ 11,00 SAY ' Foto do Perfil do Whatsapp ! ' COLOR 'B/W*'
//
// AGUARDA ATE CLICAR EM QUALQUER LUGAR DA TELA OU MUDAR O FOCO
// DA JANELA FECHANDO A JANELA DA FOTO DE FORMA AUTOMATICA
DO WHILE .T.
INKEY(1)
IF pA_MEUFOCO=wapi_getactivewindow() .OR. LASTKEY()=1002 .OR. LASTKEY()=27
EXIT
ENDIF
ENDDO
//
hb_gtSelect( hGtAnt )
//
// FORCA LIMPAR O BUFFER
DO WHILE LASTKEY()!= 0
INKEY(0.1)
ENDDO
//
tambem ajustei o inicio do programa e a hb_gtsys() conforme orientacoes do Jairo

agora so tenho mais uma dificuldade, não consegui baixar o jpg com o link do whatsapp que recebo da API
PROCEDURE DOWNLOAD_FOTO_WHATS(rA_ENDERECO,rA_NOMEEXE)
local rN_ERRO, oHttp, oExecutavel, oUrl, nTamanho, oProgress
//
SAVE SCREEN TO rT_DOWNLOADTELA
//
oExecutavel:=rA_NOMEEXE
ntamanho:=120
//
cUrl := rA_ENDERECO
oUrl := TUrl():new(cUrl)

TRY
oHttp:= TipClientHttp():New(OUrl,,.T.)
oHttp:nConnTimeout := 20000
//
oHttp:Open( rA_ENDERECO )

oHttp:exGauge := { |done, size| ShowGauge(done, size, ntamanho) }
oHttp:ReadToFile( rA_NOMEEXE )
//
rN_ERRO=hb_InetErrorCode( oHttp:SocketCon )
//
IF rN_ERRO == -1
ALERT2('VERMELHO','ERROR DE TIMEOUT AO ACESSAR O ENDERECO PARA DOWNLOAD ...')
ELSEIF rN_ERRO == -2 .OR. rN_ERRO = 16
ALERT2('VERMELHO','Download Interrompido, Verificar a Conexao com a Internet ...')
ELSEIF rN_ERRO == -3
ALERT2('VERMELHO','Problemas com a Conexao ...')
ELSEIF rN_ERRO <> 0
ALERT2('VERMELHO','Problemas ao tentar fazer o Download ...')
ENDIF
//
oHttp:close()
//
CATCH // SE DER ALGUM ERRO
ALERT2('VERMELHO','CATCH: '+str(hb_InetErrorCode( oHttp:SocketCon )))
END
RETURN
Responder