Efetuando cálculo de Aspect Ratio de vídeos em C/C++
Publicado por Mauricio Ferrari em 01/02/2023
[ Hits: 2.003 ]
Blog: https://www.youtube.com/@LinuxDicasPro
// Calculate the Aspect Ratios of given values function get_aspectRatio(){ var resTd = document.getElementById("msg_status"); resTd.innerHTML = ''; if( (!document.getElementById('aspect_width').value.isNumber()) || (!document.getElementById('aspect_height').value.isNumber()) ){ resTd.innerHTML = " <div class='alert alert-warning fade in' role='alert'> Invalid width or height entered </div>"; return; } var w=parseInt(document.getElementById('aspect_width').value); var h=parseInt(document.getElementById('aspect_height').value); if(h == 0 && w == 0){ resTd.innerHTML = " <div class='alert alert-warning fade in' role='alert'> Please enter valid width and height values! </div>"; return; } if(h == 0 && w != 0){ resTd.innerHTML = " <div class='alert alert-warning fade in' role='alert'> Please enter a valid height value! </div>"; return; } if(h!= 0 && w == 0){ resTd.innerHTML = " <div class='alert alert-warning fade in' role='alert'> Please enter width </div>"; return; } if(h == w){ aspectRatio = '1 : 1'; }else{ var mode = null; if(h>w) { dividend = h; divisor = w; mode ='portrait'; } if(w>h){ dividend = w; divisor = h; mode = 'landscape'; } var gcd = -1; while(gcd == -1){ remainder = dividend%divisor; if(remainder == 0){ gcd = divisor; }else{ dividend = divisor; divisor = remainder; } } var hr = w/gcd; var vr = h/gcd; aspectRatio = (hr + ' : ' + vr); } $('.screen_mode').text(mode); $('.final_aspect_ratio').text( aspectRatio ); $('.final_width').text(w); $('.final_height').text(h); $('.final_dimensions').text(w + ' × ' + h); }
QString StatisticsWorker::convertAspectRatio(int x, int y) { int w = x; int h = y; int dividend, divisor; // Aqui, é definido se o arquivo multimídia é orientado em retrato ou paisagem. // Se a largura(w) é igual a altura(h) o Aspect Ratio é 1:1 e dispensa detalhes. if (h == w) { return "1:1"; } else { QString mode{}; if (h > w) { // Orientação em retrato: altura/largura dividend = h; divisor = w; mode = "Portrait"; } else if (w > h) { // Orientação em paisagem: largura/altura dividend = w; divisor = h; mode = "Landscape"; } // A string ratio é definida com a orientação definida incluindo o resultado da divisão entre a largura e a altura ou vice-versa. QString ratio{mode + " " + QString::number(((float)dividend / (float)divisor))}; // Aqui é que vem a calcular. gcd é definido como -1, que será definido um novo valor no loop quando remainder = 0. uint gcd = -1; int remainder; while (gcd == -1) { // remainder será o valor da sobra da operação. remainder = dividend % divisor; if (remainder == 0) { // gcd será o divisor perfeito para a largura e a altura. gcd = divisor; } else { // A próxima operação sempre será o resultado do divisor pela sobra. dividend = divisor; divisor = remainder; } } QString hr = QString::number(w / gcd); QString vr = QString::number(h / gcd); return QString::fromLatin1("%1 (%2)").arg(hr + ":" + vr, ratio); } }
Tapeando o Bug no Menu do MATE 1.24 no Linux Mint 20
Preparando a VM para virtualização do Mac OSX no VirtualBox
Instalando o PhotoQT no Deepin 20
Como empacotar programas compilados em DEB
Microsoft Visual Studio Code no GNU/Linux
Verificar conversão de tipo em C/C++
Usando funções do sistema em C com "system"
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
Encontre seus arquivos facilmente com o Drill
Mouse Logitech MX Ergo Advanced Wireless Trackball no Linux
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Remoção de propaganda com o programa Comskip[AJUDA] (4)
Instalação do drive do adaptador wiffi (5)
Linux Lite Demorando Muito Para Ligar (1)