Página 1 de 1

LARGURA x ALTURA da imagem win32bmp()

Enviado: 25 Abr 2022 11:35
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.

LARGURA x ALTURA da imagem win32bmp()

Enviado: 27 Abr 2022 17:05
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.

LARGURA x ALTURA da imagem win32bmp()

Enviado: 02 Mai 2022 11:44
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