LARGURA x ALTURA da imagem win32bmp()

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

Moderador: Moderadores

Avatar do usuário
Linguagemclipper
Usuário Nível 3
Usuário Nível 3
Mensagens: 240
Registrado em: 16 Abr 2016 17:33
Localização: Maceió/AL
Contato:

LARGURA x ALTURA da imagem win32bmp()

Mensagem por Linguagemclipper »

Prezados,

O win32bmp() imprime a imagem com um array de 4 elementos: posição X, Y, largura, altura.
X e Y é onde queremos que a imagem apareça, ok.

Código: Selecionar todos

   *** DEFINE POSIÇÃO DO OBJETO NO PAPEL X,Y,LARGURA,ALTURA
   oBmp:Rect := aRECT
A pergunta é: tem alguma função que leia a largura e altura de uma imagem?

O problema é o seguinte: estou tendo que armazenar a largura e altura do logotipo além do nome da imagem em meu sistema para poder imprimir no cabeçalho dos relatórios. Tem gente que se enrola com essas coisas. Gostaria que fosse possível pedir apenas o nome do arquivo de imagem e o sistema computasse o resto automaticamente.
Usando xHarbour v1.2.3 Rev. 10264 + BCC 5.8, Elchs' LetoDBf, DBFCDX e SIBRA para imprimir relatórios.
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

LARGURA x ALTURA da imagem win32bmp()

Mensagem por carlaoonline »

Boa tarde!

usando C:\MiniGUI\SAMPLES\Advanced\BosTaurus\Demo10.prg

Inseri abaixo da linha 250 a seguinte linha:

msgbox("Largura = "+STR(BT_BitmapWidth (hBitmap))+ " Altura = "+str(BT_BitmapHeight (hBitmap)))


e me retornou

Largura = 922 Altura = 692

Que são as medidas da figura SAMI.JPG da pasta.


As linha abaixo, presentes no PRG, fazem a leitura da imagem.

hBitmap_Source := BT_BitmapLoadFile ("SAMI.JPG")
hBitmap := BT_BitmapClone (hBitmap_Source)


Coloquei em anexo o Demo10.prg COM A LINHA 251 acrescida por mim.
Anexos
Demo10.prg
(19.21 KiB) Baixado 80 vezes
Avatar do usuário
Linguagemclipper
Usuário Nível 3
Usuário Nível 3
Mensagens: 240
Registrado em: 16 Abr 2016 17:33
Localização: Maceió/AL
Contato:

LARGURA x ALTURA da imagem win32bmp()

Mensagem por Linguagemclipper »

O problema é que estou em modo console.
Dei uma pesquisada aqui antes de testar e ví que dá problema em modo console...
Entretanto, nessa direção que você me apontou conseguí achar essa alternativa aqui que vou testar depois. Pareceu interessante.
Vou compartilhar logo aqui pra ficar mais fácil de achar depois:

Código: Selecionar todos

/*
   Test.prg
   Get image dimensions in pixels.
*/

// Parameter.
#define imageIn hb_dirbase() + "Test.bmp"

procedure Main

   local Height, Width

   request DBFNTX                       // Utilisation de fichiers .dbf avec des index .ntx
   set( _SET_DATEFORMAT, "DD/MM/YYYY" ) // Affichage de l'année sur 4 chiffres.
   set( _SET_EOF, .F. )                 // Pas de <Ctrl-Z> à la fin des fichiers créés avec set alte.
   set exact on                         // Pas d'approximation dans la comparaison des chaînes de caractères.

   // ANSI ( Windows ) and french language.
   request HB_LANG_FR
   request HB_CODEPAGE_FRWIN
   hb_cdpSelect( 'FRWIN' )
   hb_langSelect( 'FR' )

   // Taille de la console.
   setmode( 43, 80 )
   setcolor( "GR+/B" )
   @ 0, 0, maxrow(), maxcol() box space( 9 )
   setcolor( "W/B" )

   Height := 0
   Width  := 0
   GetImageHeightWidth( imageIn, @Height, @Width )

   ? "File   : " + imageIn
   ? "Height : " + hb_ntos( Height )
   ? "Width  : " + hb_ntos( Width )
   ?
   wait
   return

procedure GetImageHeightWidth( cFile, nHeight, nWidth )
   local Img1
   img1 := win_oleCreateObject( "WIA.ImageFile" )
   img1:LoadFile( cFile )
   nHeight := img1:Height
   nWidth  := img1:Width
   img1    := nil
   return
Usando xHarbour v1.2.3 Rev. 10264 + BCC 5.8, Elchs' LetoDBf, DBFCDX e SIBRA para imprimir relatórios.
Responder