Como pegar o tamanho de uma imagem via AdvPL

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.

Mensagem demonstrando o tamanho da Imagem testada

Mensagem demonstrando o tamanho da Imagem testada

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.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

4 Responses

  1. Fábio disse:

    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!!!

  2. 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 ?

Deixe uma resposta

Terminal de Informação