Olá pessoal…
Hoje irei mostrar como pegar o tamanho de uma imagem (Altura e Largura em pixels) utilizando a linguagem AdvPL (Protheus).
A rotina pessoal é bem simples, utilizando o componente TBitmap é extraído as informações de altura e largura, para montagem de dialogs ou até mesmo relatórios utilizando tamanho real da imagem sem distorção.
Abaixo um print do retorno da rotina.
Abaixo o código fonte utilizado.
//Bibliotecas
#Include "Protheus.ch"
/*/{Protheus.doc} zTamImg
Função que retorna o tamanho da Imagem em pixels, tanto largura, como alteura
@author Atilio
@since 23/05/2015
@version 1.0
@param cImagem, Caracter, Caminho absoluto da imagem a ser analisada
@return aTamanho, Array contendo os valores de Altura e Largura em pixels
@example
u_zTamImg("C:\teste.jpg")
u_zTamImg("F:\exemplo_bloq.png")
@see https://terminaldeinformacao.com/advpl/
@obs O retorno é um array, sendo a posição [1] a Altura, e a posição [2] a Largura.
Se a imagem não existir, o retorno será sempre 0
/*/
User Function zTamImg(cImagem)
Local oTImg
Local aTamanho := {0, 0}
Default cImagem:= ""
//Criando o objeto com a imagem passada via parâmetro
oTImg := TBitmap():New(01,01,,,,cImagem,,,,,,,,,,,,,)
//Auto ajusta o tamanho, sem ele, é retornado 0
oTImg:lAutoSize := .T.
//Altura
aTamanho[1] := oTImg:nClientHeight
//Largura
aTamanho[2] := oTImg:nClientWidth
//MsgInfo("A imagem <b>"+cImagem+"</b> tem <b>"+cValToChar(aTamanho[1])+"</b> pixels de Altura e <b>"+cValToChar(aTamanho[2])+"</b> pixels de Largura!", "Atenção")
Return aTamanho
Bom pessoal, por hoje é só.
Abraços e até a próxima.

Fala ai Atílio…
Show de bola suas dicas que envolvem ADVPL… sempre precisamos fazer alguma coisa que não é prática comum dos consultores ou desenvolvedores ADVPL e ai que suas dicas nos ajudam e muiiiito… valew!!!
Grande Fabião.
Eu que agradeço todo o apoio.
Um grande abraço meu querido.
Valeuu cara.. Tava precisando disso.. Nem tinha imaginado fazer com o TBitmap.
Com o lAutoSize := .T. ele retorna o tamanho verdadeira da imagem ou o redimensionado pelo objeto ?
Boa tarde Eurai.
Com o lAutoSize ele seta automaticamente (tanto a altura como a largura da imagem) com o tamanho real da imagem e não redimensionado pelo objeto.
Um grande abraço.
Olá boa tarde Atilio tudo bem? Sabe me dizer se atualmente teria alguma forma de redimensionar o tamanho de uma imagem usando advpl? Tenho algumas imagens em uma pasta e gostaria de exibir com um tamanho menor no sistema
Bom dia Victor, tudo joia graças a Deus e você?
Se for quanto a exibição, depende do método ou classe que esteja usando, por exemplo, em FWMSPrinter ou numa TBitmap, existe os parâmetros de largura e altura da imagem, ai você consegue modificar a exibição dela.
Só fique atento, com a proporção da imagem, por exemplo, se ela tiver um tamanho 800×600, diminua proporcional tanto a altura como a largura, no caso vamos supor que eu queria diminuir uns 40%, ai ficaria 480×360.
Agora se você realmente quer diminuir o tamanho da imagem em espaço em disco (MB ou KB), ai você teria que instalar algum app de terceiros, tipo o ImageMagick, e acionar ele via ShellExecute em AdvPL, diminuindo o tamanho do arquivo da imagem.
Tenha uma ótima e abençoada sexta feira.
Um forte abraço.