Imagem nos emails com resource

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

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

Imagem nos emails com resource

Mensagem por JoséQuintas »

Comecei a usar o recém descoberto método de resource, existente no Harbour pra qualquer sistema operacional

Código: Selecionar todos

FUNCTION JPEGBancoItau()
   #pragma __binarystreaminclude "image\banco341.jpg" | RETURN %s

FUNCTION JPEGBancoBradesco()
   #pragma __binarystreaminclude "image\banco237.jpg" | RETURN %s

FUNCTION JPEGNatal()
   #pragma __binarystreaminclude "image\natal.jpg" | RETURN %s

FUNCTION JPEGAnoNovo()
   #pragma __binarystreaminclude "image\anonovo.jpg" | RETURN %s
Os dois primeiros, uso pra colocar imagem nos PDFs
Os dois últimos, vou passar a usar nos emails. É que final de ano troco o logotipo pelas imagens de festas.
Não vou mais precisar de arquivo em disco, nos clientes, para esses casos.

Ah sim... nos emails... a tip_Encode() que codifica imagem, converte conteúdo e não arquivo, então está do jeito que ela precisa.
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
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Imagem nos emails com resource

Mensagem por asimoes »

Olá Quintas,

Fiquei interessado neste recurso, você poderia postar um exemplo com pdf?
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Imagem nos emails com resource

Mensagem por asimoes »

Olá Quintas,

Você faz assim para usar a imagem em pdf?

Código: Selecionar todos

hb_MemoWrit( "teste.bin", JPegAsa() )
oPDF := PDFClass():New()
oPDF:cImagem   := "teste.bin"
FUNCTION JPegAsa()
   #pragma __binarystreaminclude "img\asaprev1.jpg" | RETURN %s

►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Imagem nos emails com resource

Mensagem por asimoes »

Consegui com JPEG E PNG

Com as funções:

Código: Selecionar todos

oPDF:cImagem   := JPegAsa()

//oImage := HPDF_LoadPngImageFromMem( ::oPdf, cJPEGFile, nWidth  )
oImage := HPDF_LoadJpegImageFromMem( ::oPdf, cJPEGFile, nWidth )

#pragma -km+
FUNCTION JPegAsa()
   #pragma __binarystreaminclude "img\asaprev1.jpg" | RETURN %s

Imagem:
Screen Shot 01-04-16 at 04.29 PM.PNG
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Imagem nos emails com resource

Mensagem por JoséQuintas »

Não, acho que não conseguiu.

Código: Selecionar todos

oPDF:cImagem   := JPegAsa()
Na linha acima, carrega a imagem para a variável ::cImagem da classe

Código: Selecionar todos

oImage := HPDF_LoadJpegImageFromMem( ::oPdf, cJPEGFile, nWidth )
Nessa linha usa outra variável.

Falta ver a linha aonde usa o desenho, talvez tenha deixado igual antes.

O que já tentei aqui e não deu certo:

Código: Selecionar todos

TestJpg := MemoRead( "test.jpg" )
oImage := HPDF_LoadJPEGImageFromMem( ::oPDF, TestJpg, Len( TestJpg ) )
HPDF_Page_DrawImage( ::oPage, oImage, nLeft, nBottom, nWidth, nHeight )
pra usar no lugar deste:

Código: Selecionar todos

   oImage  := HPDF_LoadJPEGImageFromFile( ::oPdf, cJPEGFile )
   HPDF_Page_DrawImage( ::oPage, oImage, nLeft, nBottom, nWidth, nHeight )
São 2 etapas: carregar a imagem para o PDF, e depois desenhar a imagem.
Como arquivo ok.
Esse de memória ainda não consegui.
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
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Imagem nos emails com resource

Mensagem por asimoes »

Eu fiz esse outro método só para imagens resource

Código: Selecionar todos

METHOD DrawImageB( bJPEGFile, nRow, nCol, nWidth, nHeight ) CLASS PDFClass
   LOCAL oImage
   IF ::nType == PDF_TXT
      RETURN Nil
   ENDIF
   nRow    := ::RowToPDFRow( nRow )
   nCol    := ::ColToPDFCol( nCol )
   oImage := HPDF_LoadJPEGImageFromMem( ::oPdf, bJPEGFile, nWidth )
   //oImage := HPDF_LoadPngImageFromMem( ::oPdf, bJPEGFile, nWidth )
   //oImage := HPDF_LoadRawImageFromMem(::oPdf, bJPEGFile ) // testar
   HPDF_Page_DrawImage( ::oPage, oImage, nCol, nRow, nWidth, nHeight )
RETURN NIL
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Imagem nos emails com resource

Mensagem por asimoes »

Código: Selecionar todos

       oPDF := PDFClass():New()
       oPDF:nType     := 2 //1-Paisagem, 2-Retrato
       oPDF:cFileName := "TESTE.PDF"
       oPDF:cHeader01 := "TESTE"
       oPDF:cFields01 := "Matrícula Sócio/Dependente                         Dt.Entrada  Dt.Saída        "
       oPDF:nFontSize := 11
       oPDF:nMargin   := 18
       oPDF:bImagem   := JPegAsa() 
       oPDF:Begin()
No método PageHeader:

IF !Empty(::bImagem)
::DrawImageB( ::bImagem, 4, 0, 60, 30)
ENDIF
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Imagem nos emails com resource

Mensagem por JoséQuintas »

Caracas....
Tava com dois problemas de uma vez.

1. O JPEG que peguei pra teste não funcionava
2. O Harbour não recompila o fonte de resource, se apenas trocar o arquivo de imagem, por isso não adiantou trocar imagem

Apaguei tudo pra forçar recompilar e deu certo.
Versão resumida:

Código: Selecionar todos

cJPEGFile := JPEGNatal() 
oImage := HPDF_LoadJPEGImageFromMem( ::oPDF, cJPEGFile, Len( cJPEGFile ) )
HPDF_Page_DrawImage( ::oPage, oImage, nLeft, nBottom, nWidth, nHeight )

FUNCTION JPEGNatal()
   #pragma __binarystreaminclude "image\natal.jpg" | RETURN %s
Pra quem não entendeu:
Vai bastar o EXE. As imagens ficam embutidas no EXE.

Valeu ASimões.
Eu Ia quebrar a cabeça por muito tempo, porque o problema não era o fonte.
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

Imagem nos emails com resource

Mensagem por JoséQuintas »

ASimões.

Verifique se acha interessante:

Código: Selecionar todos

METHOD DrawImageSize( nRow, nCol, nHeight, nWidth, cJPEGFile ) CLASS PDFClass

   ::DrawImageBox( nRow, nCol, nRow + nHeight, nCol + nWidth, cJPEGFile )
   RETURN NIL
DrawImageBox -> desenha passando coordenadas igual box: linha inicial, coluna inicial, linha final, coluna final
DrawImageSize -> desenha passando tamanho em linhas/colunas: linha inicial, coluna inicial, altura, largura

Na dúvida, deixei os dois modos, é só essa rotina a mais, bem pequena.
Padronizei tudo com o outro modo, mas mantive esse.
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
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Imagem nos emails com resource

Mensagem por asimoes »

Quintas,

Fiz um teste com:

Código: Selecionar todos

#pragma -km+
FUNCTION JPegAsa()
   #pragma __binarystreaminclude "img\asaprev1.jpg" | RETURN %s
Criei uma lib e funciona também.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Imagem nos emails com resource

Mensagem por JoséQuintas »

não entendi o que quis dizer, foi sobre usar em LIB?

porque o #pragma -km+ ?
Pelo que vi no harbour isso é pra ativar macro substituição.
Compatibility flags: -k[options]

Options: c clear all flags (strict Clipper mode)
h[-] Harbour mode (default)
o[-] allow operator optimizations
i[-] enable support for HB_INLINE (default)
r[-] runtime settings enabled
s[-] allow indexed assignment on all types
x[-] extended Xbase++ mode (default)
u[-] strings in user encoding
d[-] accept macros with declared symbols
m[+] turn off macrotext substitution
j[+] turn off jump optimization in pcode
? this info
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
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Imagem nos emails com resource

Mensagem por asimoes »

Sim eu fiz um teste colocando a função em uma lib e funcionou.
libresource.hbp

Código: Selecionar todos

#---------------------------
# Nome da Lib
# ---------------------------
-olibresource
# ---------------------------
# Prg(s) e Rc(s)
# ---------------------------
libresource.prg
libresource.hbc

Código: Selecionar todos

{win}incpaths=d:\hb32fork\hwgui\include;
hbmk.hbmk

Código: Selecionar todos

libresource.hbc
-head=full
-n
-warn=no
-inc
-hblib
-workdir=.\objmingw\
libresource.prg

Código: Selecionar todos

#pragma -km+
FUNCTION PNGAsa()
   #pragma __binarystreaminclude "img\abertura.png" | RETURN %s
   
#pragma -km+
FUNCTION JPegAsa()
   #pragma __binarystreaminclude "img\asaprev1.jpg" | RETURN %s
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Imagem nos emails com resource

Mensagem por asimoes »

Quintas,

porque o #pragma -km+ ?

Eu peguei de um comentário do próprio Viktor, pode ser desnecessário.
Screen Shot 01-05-16 at 12.49 PM.PNG
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Imagem nos emails com resource

Mensagem por asimoes »

Quintas,

Acrescentando mais tempero na sopa (rs) um exemplo com wave (usando SND_MEMORY) na função PlayWave()

Obs.: A função MessageWave() pode estar embutida em uma lib.

Código: Selecionar todos


PlayWave(MessageWave(), .f.)

FUNCTION MessageWave()
   #pragma __binarystreaminclude "message.wav" | RETURN %s   

#pragma begindump
#include <windows.h>
#include <commctrl.h>
#include <mmsystem.h>

#include "hbapi.h"

HB_FUNC( PLAYWAVE )
{
   int     Style = SND_ASYNC;
   HMODULE hmod  = NULL;

   if( hb_parl( 2 ) )
   {
      Style = Style | SND_RESOURCE;
      hmod  = GetModuleHandle( NULL );
   }
   else
      Style = Style | SND_MEMORY;

   if( hb_parl( 3 ) )
      Style = Style | SND_SYNC;

   if( hb_parl( 4 ) )
      Style = Style | SND_NOSTOP;

   if( hb_parl( 5 ) )
      Style = Style | SND_LOOP;

   if( hb_parl( 6 ) )
      Style = Style | SND_NODEFAULT;

   hb_retl( PlaySound( hb_parc( 1 ), hmod, Style ) );
}

#pragma enddump
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Imagem nos emails com resource

Mensagem por fladimir »

Desculpe ser talvez um pouco "chato", mas o título correto do tópico não seria "Imagem nos PDFs com resources"?
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Responder