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.