Clipper On Line • Ver Tópico - Imagem nos emails com resource

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

 

Imagem nos emails com resource

Mensagempor JoséQuintas » 01 Jan 2016 14:37

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

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18152
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Imagem nos emails com resource

Mensagempor asimoes » 01 Jan 2016 15:33

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 de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Imagem nos emails com resource

Mensagempor asimoes » 02 Jan 2016 19:08

Olá Quintas,

Você faz assim para usar a imagem em pdf?

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 de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Imagem nos emails com resource

Mensagempor asimoes » 04 Jan 2016 15:36

Consegui com JPEG E PNG

Com as funções:

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 de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Imagem nos emails com resource

Mensagempor JoséQuintas » 04 Jan 2016 16:32

Não, acho que não conseguiu.

oPDF:cImagem   := JPegAsa()


Na linha acima, carrega a imagem para a variável ::cImagem da classe

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:

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:

   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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18152
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Imagem nos emails com resource

Mensagempor asimoes » 04 Jan 2016 16:38

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

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 de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Imagem nos emails com resource

Mensagempor asimoes » 04 Jan 2016 16:42

       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 de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Imagem nos emails com resource

Mensagempor JoséQuintas » 04 Jan 2016 17:17

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:

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18152
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Imagem nos emails com resource

Mensagempor JoséQuintas » 04 Jan 2016 19:23

ASimões.

Verifique se acha interessante:

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18152
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Imagem nos emails com resource

Mensagempor asimoes » 05 Jan 2016 10:20

Quintas,

Fiz um teste com:

#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 de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Imagem nos emails com resource

Mensagempor JoséQuintas » 05 Jan 2016 11:15

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18152
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Imagem nos emails com resource

Mensagempor asimoes » 05 Jan 2016 11:47

Sim eu fiz um teste colocando a função em uma lib e funcionou.
libresource.hbp
#---------------------------
# Nome da Lib
# ---------------------------
-olibresource
# ---------------------------
# Prg(s) e Rc(s)
# ---------------------------
libresource.prg

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

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

libresource.prg
#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 de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Imagem nos emails com resource

Mensagempor asimoes » 05 Jan 2016 11:51

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 de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Imagem nos emails com resource

Mensagempor asimoes » 05 Jan 2016 13:24

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.


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 de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Imagem nos emails com resource

Mensagempor fladimir » 17 Jan 2016 12:56

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.
Avatar de usuário

fladimir
Colaborador

Colaborador
 
Mensagens: 2436
Data de registro: 15 Nov 2006 19:21
Curtiu: 28 vezes
Mens.Curtidas: 157 vezes

Próximo



Retornar para Contribuições, Dicas e Tutoriais

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 11 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro