Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

@gilsones

[Resolvido] Calcular proporção em imagem secundária

Recommended Posts

Tenho uma imagem de w640 x h480, e suponhamos que dentro dela tenho outra imagem com w400 x h100 que se encontra na posição topo(y)= 100 e esquerda(x)= 50.

 

Ao redimensionar a primeira imagem (isso já está pronto), preciso que a imagem de dentro também seja redimensionada "proporcionalmente", ou seja, preciso calcular novos valores de W, H, X e Y da imagem secundária (imagem de dentro) para que fique como a imagem abaixo:

 

calculo.jpg

 

Alguém consegue me ajudar?

 

Sou péssimo em cálculos <_<

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu também não sou muito bom de cálculos, mas, num primeiro momento, parece ser uma regra de três básica:

 

Você mesmo já fez o cálculo, basta gora aplica numa função:

 

// Largura

640 --- 400
400 --- x
x = 160000 / 640
x = 250

Os componentes aqui são: A = 640; B = 400; C = 400; D = X

 

A fórmula, então, seria:

 

D = B * C / A

Numa função:

 

function proportionalReduction( $externalWidth, $internalWidth, $newExternalWidth ) {

   return ( $internalWidth * $newExternalWidth ) / $externalWidth;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

É, foi bem isso mesmo, o código ficou assim:

 

Consegui!!

 

Pra quem precisar ta ae:

 

pri = imagem primaria

sec = imagem secundaria

2 = imagem com dimensão editada

 

$secW2 = round(($secW * $priW2) / $priW);
$secH2 = round(($secH * $priH2) / $priH);
$secY2 = round(($secY * $priH2) / $priH);
$secX2 = round(($secX * $priW2) / $priW);

 

assim independente do tamanho da imagem final as dimensãos e posição da imagem secundário será proporcional.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Olá @gilsones, tudo bom ?


Estou procurando a algum tempo uma forma de calcular o W, H, X, Y de um elemento dentro de outro, redimensionando proporcionalmente.


Seu post caiu com uma luva, pois é exatamente isso que preciso.


Teria como você me ajudar ?


Seguindo o exemplo que você deixou no seu post;


$secW2 = round(($secW * $priW2) / $priW);

$secH2 = round(($secH * $priH2) / $priH);

$secY2 = round(($secY * $priH2) / $priH);

$secX2 = round(($secX * $priW2) / $priW);


Sei que o $secW é a largura da imagem secundaria, e o $priW é a largura da imagem principal, mas o que é o $priW2, $priH2 ?


Essa conta é a mesma, aumentando ou diminuindo a imagem principal ?


Sério mesmo, sua ajuda vai ser de extrema importância, e ficarei muito agradecido, pois tenho um projeto que depende desse cálculo.


Sou programador também, e quem sabe podemos trocar informações.


Desde já agradeço sua atenção.


Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Supondo que tenho uma um retangulo (pri), e dentro dele outro retangulo (sec);

 

Quando redimensiono o retangulo primário, as novas dimensões deles será priW2 e priH2, ou seja, a dimensão final dele. São dessas duas variáveis que será calculado as dimensão e posição do retangulo secundário.

 

Não sei se fui muito claro, qualquer dúvida fique a vontade em perguntar ok.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá @gilsones, tudo bom ?

 

Cara, deu certo.

Muito obrigado mesmo, me ajudou demais aqui.

 

Estou fazendo uma aplicação de edição de imagens em JQuery e estava travado com este cálculo, agora consigo prosseguir.

 

Mais uma vez, obrigado.

 

Precisando de algo e eu podendo ajudar, estamos aí.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.