Efetuando cálculo de Aspect Ratio de vídeos em C/C++
Publicado por Mauricio Ferrari em 01/02/2023
[ Hits: 2.212 ]
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); } }
BleachBit 4.0.0 no Slackware Current
Como Criar e Aplicar um Patch de Correção de Código
Tenha um aquário no seu terminal no Debian, Ubuntu, Linux Mint e derivados
Integrando AppImage no Debian, Ubuntu e Linux Mint
Lista de IDEs para Programação em Qualquer Distro
Cross Compiling - compilando seus programas C/C++ para Windows usando seu Linux
FL-Av - Interface gráfica para ClamAV
gcc: fatal error: cannot execute 'cc1plus': execvp: [...] - Como resolver no Linux Mint 20
Autoestudo e certificação C/C++
A arte e a prática da Disciplina a longo prazo
Topgrade - Atualize seu sistema Linux inteiro com um único comando
Customizar a Instalação do Linux Debian com Preseed
Site com diversos emojis para seus códigos
Um modo leve de ouvir/ver áudio/vídeo da internet em máquinas pererecas
Resolver algumas mensagens de erro do SSH
Instalar módulo de segurança do Banco do Brasil Warsaw do tipo .run
Preciso de opiniões sobre meus programas (3)
criar alias do comando "ls -la" (14)