Verhoudingen uitrekenen via dimensies

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Python developer Consultancy

Functie Als Python developer bij deze organisatie werk je voor verschillende klanten. Doordat de oprichter een groot netwerk heeft kun je zelf voorkeuren uitspreken in het type projecten dat je wilt gaan doen. Zo zijn er bijvoorbeeld langdurige of juist korte projecten, maar is ook het type klant, of project bespreekbaar. Werk jij bijvoorbeeld graag aan een nieuw, state-of-the-art web portaal of ben je liever betrokken bij een migratietraject van een bestaande applicatie? Wij gaan voor jou aan de slag! Eisen • Je bent een gedreven developer met sterke voorkeur voor Python • Je bent meer dan een codeklopper •

Bekijk vacature »

Frontend Developer - Leeuwarden

Frontend Developer – Leeuwarden Als Frontend Developer bouw jij mee aan het onderwijs van de toekomst! In een scrum team werken met jonge en enthousiaste collega’s, moderne technieken, ruimte voor eigen ontwikkeling en op een proactieve wijze kunnen meewerken aan innovatie binnen het onderwijs. Magister is het state-of-the-art softwarepakket dat scholen in het voortgezet onderwijs op alle fronten ontzorgt. Van leerlingenadministratie tot het ondersteunen van individuele leerlijnen, van toegang tot digitaal lesmateriaal tot het plannen van het lesrooster. In de Magister app bedient Magister ruim 2,5 miljoen gebruikers waarvan, dagelijks meer dan 600.000 unieke. Hiermee is Magister de absolute marktleider

Bekijk vacature »

Embedded Software Developer Games

Functie omschrijving Heb jij affiniteit met hardware en wil jij kleuren binnen een Qt framework? Spreek jij de talen C en of C ++? Dan ben ik wellicht opzoek naar jou! Voor een super gave opdrachtgever in omgeving Delft is er namelijk plek voor een nieuwe kracht! Dit bedrijf is gespecialiseerd in het ontwerpen van software voor een unieke game industrie. Wil jij betrokken worden bij een proces dat loopt van ontwikkeling tot installatie? Waarbij je bezig zult zijn met perfecte systemen die geleverd worden aan binnen en buitenland? Je zult in een team, samen met vier ontwikkelaars, de mooiste

Bekijk vacature »

Java developer

Als Java Developer bij Sogeti ben je onderdeel van onze toonaangevende community die bestaat uit ruim 100 gepassioneerde professionals. In teamverband lever je mooie prestaties. Daarmee draag je aan bij de meerwaarde die wij leveren aan onze klanten. Geen werkdag is hetzelfde, je bent voortdurend bezig met het oplossen van allerlei complexe vraagstukken binnen bedrijfskritische systemen. Een voorbeeld hiervan is een cliënt-volgsysteem bij Reclassering Nederland. Andere klanten waar wij onder andere voor werken: KPN, Philips, Nationale-Nederlanden, Kamer van Koophandel, ABN AMRO, Bovemij, Arval en de Politie. Werken bij Sogeti Nieuwe ontwikkelingen volgen we op de voet en delen we binnen de

Bekijk vacature »

Lead developer (PHP, Symfony, DDD)

Functie Als Lead developer zorg je ervoor dat het team (bestaande uit zowel junior als ervaren developers) in staat is om de kwaliteit van de software (en code) verder te verhogen. In samenwerking met het team, de product owner en de andere lead developers zet je technische lijnen uit en bepaal je de prioriteiten per sprint. Lijkt het jou interessant om complexe problemen op te lossen en bijvoorbeeld een nieuwe applicatiestructuur in Symfony op te zetten? Dan komen wij graag met je in contact. Eisen • HBO werk- en denkniveau (ze kijken niet naar papieren, maar naar denkniveau, motivatie en

Bekijk vacature »

Software Developer

Dit ga je doen Je bent verantwoordelijk voor de warehouse applicatie die een integratie heeft met de PLC laag; Je ontwikkelt in C#/.Net; Je werkt mee aan de migratie naar .NET 6; Je bent verantwoordelijk voor het ontwikkelen van interfaces en het visualiseren van componenten; Je denkt mee over het design voor business oplossingen; Je bent verantwoordelijk voor het testen van de gebouwde oplossing. Hier ga je werken Voor een internationale organisatie in de transport zijn wij momenteel op zoek naar een Software Developer. Zij zijn wereldwijd de grootste speler en lopen voorop met het automatiseren van alle processen van

Bekijk vacature »

Medior Mobile Developer iOS Amsterdam

Functie What will you be doing as Mobile Developer? As an iOS app developer you will work in a multidisciplinary team of app developers, web developers and designers. You will work on world-class apps that will be used by thousands of people. There is a lot of room for self-development on a technical and personal level. Together with the rest of the team you develop in the newest techniques and you go for the best quality. We work with Kotlin Multiplatform Mobile to develop hybrid apps and we guarantee quality with peer reviews, unit testing and we use a CI/CD.

Bekijk vacature »

Ervaren PHP Software Developer

Functieomschrijving Voor een toffe opdrachtgever in regio Breda zijn wij op zoek naar een medior PHP Developer met affiniteit met Laravel. Je komt te werken bij een uitdagende opdrachtgever met supergave klanten in een specifieke branche. Als PHP ontwikkelaar ben je samen met een vooruitstrevende team van 6 collega’s verantwoordelijk voor de ontwikkeling, beheer en het vernieuwen van informatiesystemen voor een specifieke branche. Je ondersteunt complexe uitdagingen van klanten. Vervolgens breng je hun wensen in kaart en vertaalt deze door naar maatwerk software. Affiniteit met Laravel is een pré. Om de klanten zo goed mogelijk te ondersteunen en snel in

Bekijk vacature »

PHP Developer

Functieomschrijving Vanuit het hoofdkantoor in omgeving Breda ben je als PHP/Symfony Developer niet alleen gefocust op het ontwikkelen van software. Daarnaast ben je voortdurend bezig met het zoeken naar nieuwe trends en ontwikkelingen die van waarde kunnen zijn voor de efficiëntie van software ontwikkeling. Hieronder een kort overzicht van jouw takenpakket: Het ontwerpen en implementeren van webapplicaties met het Symfony Framework; Het schrijven van een schone en efficiënte codes; Het testen van ontwikkelde applicaties om te zorgen dat ze goed functioneren en voldoen aan de eisen van de klant; Onderhouden en updaten van bestaande applicaties die zijn gebouwd met het

Bekijk vacature »

Remote - Front-end Angular developer

Functie The IT team currently consists of the IT Manager, 2 back-end developers, 1 full-stack developer, 1 designer, and a DevOps engineer. They are currently looking for an experienced Front-end developer who will work autonomously and in a disciplined manner, being the only developer working on their Front-end applications at the start. They do have the ambition to find a second developer soon, who you will then be able to supervise. You will be working on the further development of their existing UI in Angular. But also developing a mobile app. They place great value on User Experience and opt

Bekijk vacature »

Front-end developer Supply Chain Angular, ReactJS,

Functie Het development team bestaat momenteel uit 9 fullstack (Python en .NET) developers. Binnen het team ga jij je toespitsen op het creëren van de optimale toegankelijkheid en user experience. Om dit voor elkaar te krijgen zul je ontwerpen, programmeren, testen en implementeren. Het hele proces dus! Maar ook bijvoorbeeld meedenken over strategie en design. Hierin krijg je veel vrijheid om de functie naar eigen inzicht in te vullen en te pionieren. Alle data die wordt gebruikt is zichtbaar in een webapplicatie, geschreven in Angular en React. Momenteel zijn ze bezig om de dashboards anders vorm te geven en de

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

Senior Front-End Developer

Als Senior Front-End Developer bij Coolblue verbeter je de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Wat doe je als Senior Front-End Developer bij Coolblue? Als Senior Front-end Developer werk je aan de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Je vindt het leuk om samen te werken met de UX designer om stories op te pakken. Daarnaast ben je trots op je werk en verwelkomt alle feedback. Ook Senior Front-end Developer worden bij Coolblue? Lees hieronder of het bij je past. Dit vind je leuk om te doen Verbeteren van de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Nadenken

Bekijk vacature »

SQL Developer

Functie omschrijving We are looking for a dutch native speaker Jij gaat in deze functie aan de slag met uitdagende projecten en het creëren van maatwerk software, vooral middels SQL. Iedere klant/project is weer anders, maar dat maakt dit bedrijf en de functie erg uniek & uitdagend. Verder heb je de volgende taken: Ontwikkelen en ontwerpen van SQL databases. T-SQL wordt hierbij gebruikt als programmeer laag; Optimalisatie van query's, voor een verbeterde efficiency; Begeleiden van junior developers, mits je dit leuk vindt; Heb je meer interesse in een rol als consultant, dan is dit ook mogelijk. Je heb hier meer

Bekijk vacature »

Lead Java Developer

Dit ga je doen Je taken bestaan onder andere uit: Het aansturen van een development team bestaande uit 8 collega's op technisch maar ook HR gebied; Het maken van strategische keuzes omtrent de (nieuw)bouw van deze applicatie; Het maken van technische ontwerpen; Hands-on mee ontwikkelen met het team (met o.a. Java, Spring, Angular, REST); Reviewen van code en feedback geven op collega developers. Hier ga je werken Als Lead Software Developer ben je verantwoordelijk voor één van de vier Agile Java ontwikkelteams die bouwen aan technologie die duizenden instanties wereldwijd verbindt. Dit Agile team, data Jira en Confluence gebruikt en

Bekijk vacature »
- Ariën  -
Beheerder

- Ariën -

11/10/2019 23:47:11
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php

class Image {

    public static function getRatio($file) {
    list($width, $height, $type, $attr) = getimagesize($_SERVER['DOCUMENT_ROOT'] . $file);
    if (function_exists("gmp_gcd")) {
        $gcd = gmp_gcd($width, $height);
        $ratio = ($width / $gcd) . ':' . ($height / $gcd);
        $array = array('16:9', '4:3', '3:2', '7:5', '10:8');

        if (in_array($ratio, $array)) {
        return $ratio;
        }
else {
        return "Onbekend";
        }
    }
else {
        return "n/a";
    }
    }

}

?>

Vanavond een prachtige class gebouwd.
Echter blijkt gmp_gcd() niet overal te werken, omdat het niet altijd geïnstalleerd is.
Dat kan ik uiteraard wel doen, maar zijn er nog andere truukjes om de verhouding te achterhalen aan de hand van de ingevoerde dimensies?
Gewijzigd op 12/10/2019 00:34:03 door - Ariën -
 
PHP hulp

PHP hulp

19/04/2024 04:25:58
 
Frank Nietbelangrijk

Frank Nietbelangrijk

12/10/2019 00:19:40
Quote Anchor link
Gewoon getimagesize() gebruiken lijkt me?
 
- Ariën  -
Beheerder

- Ariën -

12/10/2019 00:30:04
Quote Anchor link
Die gebruik ik al om van de bron-afbeelding de dimensies op te halen.
Maar hoe kom ik dan zonder de GMP-functies achter de verhouding, zoals 16:9, 4:3 etc...?
Gewijzigd op 12/10/2019 00:34:33 door - Ariën -
 
Ozzie PHP

Ozzie PHP

12/10/2019 01:21:16
Quote Anchor link
Is dat niet een kwestie van uitrekenen?

Je weet de width en de height.

Om te bepalen of de ratio 16:9 is, moet de verhouding 16/9 zijn. Dat zou je als volgt kunnen testen:

width * (9/16) = height

En dan zou ik bij de controle een marge aanhouden van een paar (bijv. 3) pixels voor als de hoogte net een paar pixels te groot of klein is, bijv. als gevolg van onsecuur uitsnijden of het verspringen van een pixel bij het schalen van de afbeelding.
 
- Ariën  -
Beheerder

- Ariën -

12/10/2019 01:32:41
Quote Anchor link
Ja, jouw berekening klopt, maar zowel de lengte als de breedtte weet ik al.

In jouw berekening weet je de ratio 16:9 al, maar die wil ik juist bepalen aan de hand van de afmetingen.
Gewijzigd op 12/10/2019 01:34:19 door - Ariën -
 
Adoptive Solution

Adoptive Solution

12/10/2019 08:19:43
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php

/**
 * Calculate the ratio between two numbers.
 *
 * @param int $num1 The first number.
 * @param int $num2 The second number.
 * @return string A string containing the ratio.
 */

function getRatio( $num1, $num2 )
{

    for($i = $num2; $i > 1; $i--)
    {

        if(($num1 % $i) == 0 && ($num2 % $i) == 0)
        {

            $num1 = $num1 / $i;
            $num2 = $num2 / $i;
        }
    }

    $ratio = "$num1:$num2";
    $array = array('16:9', '4:3', '3:2', '7:5', '10:8', '1:5');
    if (in_array($ratio, $array))
    {

        return $ratio;
    }
else {
        return "Onbekend";
        //return "$num1:$num2";
    }
}


list($width, $height, $type, $attr) = getimagesize($_SERVER['DOCUMENT_ROOT'] . $file);

echo getRatio( $width, $height ), '<br>';

//Example returns 1:5
echo getRatio( 2, 10 ), '<br>';

?>


Kwam het hier tegen :

https://thisinterestsme.com/php-calculate-ratio/
 
Ward van der Put
Moderator

Ward van der Put

12/10/2019 10:07:12
Quote Anchor link
SEO-tip: voeg ook 1:1 toe. ;-)
 
- Ariën  -
Beheerder

- Ariën -

12/10/2019 10:37:20
Quote Anchor link
@Adoptive Solutuon: Thanks!
@Ward: De link tussen 1:1 en SEO ontgaat mij eventjes. Kan je dit uitleggen? :-)
 
Ward van der Put
Moderator

Ward van der Put

12/10/2019 10:58:18
Quote Anchor link
Voor bijvoorbeeld afbeeldingen bij een artikel ziet Google het liefst de drie verhoudingen 16:9, 4:3 én 1:1:

Quote:
For best results, provide multiple high-resolution images (minimum of 800,000 pixels when multiplying width and height) with the following aspect ratios: 16x9, 4x3, and 1x1.


https://developers.google.com/search/docs/data-types/article

Een vergelijkbare eis geldt voor onder andere foto's voor productpagina's en recepten:

https://developers.google.com/search/docs/data-types/product

https://developers.google.com/search/docs/data-types/recipe

Verder moet een bedrijfslogo minimaal 112 × 112 pixels groot zijn:

https://developers.google.com/search/docs/data-types/logo

Als je aan de slag gaat met beeldratio's (en schalen of bijsnijden) is het wel zo handig meteen de functionele eisen voor Google mee te nemen.
 
Thomas van den Heuvel

Thomas van den Heuvel

12/10/2019 15:42:36
Quote Anchor link
- Ariën - op 11/10/2019 23:47:11:
maar zijn er nog andere truukjes om de verhouding te achterhalen aan de hand van de ingevoerde dimensies?

Nou, de eerste user comment op de documentatiepagina van gmp_gcd() geeft een zeer nette recursieve implementatie:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
function gcd($a, $b) {
    return ($a % $b) ? gcd($b, $a % $b) : $b;
}

?>

Voor de goede orde zou je misschien ook rekening moeten houden met staande afbeeldingen (portretten). Dus of je voegt ook de ratio's 9:16 et cetera toe, maar dat is een beetje dubbel, of je kijkt gewoon naar de langste zijde en de kortere zijde, ongeacht of dit een breedte of hoogte is. Het gaat (waarschijnlijk?) per slot van rekening om de ratio. Misschien wil je dan wel ergens een soort van "portrait flag" (true of false) bijhouden.

Nog wat wiskundige achtergrond:
Elk getal is te schrijven als een product van priemgetallen (het bewijs hiervoor laat ik even achterwege :p).

Bijvoorbeeld 1024 is 2^10 en 768 is 2^8 * 3^1. Dit wordt ook wel de priemfactorisatie genoemd.

Het verband met gcd (greatest common divisor, grootste gemene deler) en ook de lcm (least common multiple, kleinste gemene veelvoud) is als volgt: bij de priemfactorisatie kun je altijd vermenigvuldigen met 1. Dit verandert niets aan het resultaat: 2^10 * 1 * 1 * 1 is nog steeds 1024. 1024 kun je dus bijvoorbeeld ook schrijven als 2^10 * 3^0.

Als je van twee getallen de gcd wilt bepalen dan is dat het minimum van alle product-machten van de priemfactorisatie. Dat lijkt een mond vol, maar dit is toch redelijk simpel:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
1024 = 2^10 * 3^0
 768 = 2^ 8 * 3^1
----------------- GCD (min)
 256 = 2^ 8 * 3^0

De kleinste factor van het priemgetal 2 is 8. De kleiste factor van het priemgetal 3 is 0. De grootste gemene deler van 1024 en 768 is dus 256 (2^8 * 3^0).

Het complement hiervan (lcm) is, je raadt het misschien al, het maximum van alle product-machten van de priemfactorisatie:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
1024 = 2^10 * 3^0
 768 = 2^ 8 * 3^1
----------------- LCM (max)
3072 = 2^10 * 3^1

3072 is daarmee het kleinste gemene veelvoud van 1024 en 768.
Gewijzigd op 12/10/2019 18:01:02 door Thomas van den Heuvel
 
- Ariën  -
Beheerder

- Ariën -

12/10/2019 21:34:53
Quote Anchor link
Bedankt voor de uitgebreide uitleg Thomas.
Mijn hogere wiskunde is een beetje roestig, maar ik zal het op mijn gemak even doorlezen.

Ik ga er niet echt veel actiefs mee doen, maar ik vind het wel een handig idee om de verhoudingen als eigenschap bij de foto's in mijn fotoarchief in mijn CMS te tonen. Dan kan je prima zien welke formaten prima in de ankeilers van mijn site zullen passen. Uiteraard zal ik andere formaten visueel netjes croppen, maar als ze netjes passen op 4:3, dan is het helemaal prima zonder enig beeldverlies.
 
Thomas van den Heuvel

Thomas van den Heuvel

12/10/2019 22:47:01
Quote Anchor link
Maar je hebt dus helemaal geen staande foto's, alleen maar liggende?

Anders kun je zoiets doen als:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
// $width = ...;
// $height = ...;


$max = max($width, $height);
$min = min($width, $height);

$gcd = gcd($max, $min);
$ratio = ($max/$gcd).':'.($min/$gcd);
?>

Of de foto nu staand of liggend is maakt dan niet uit. Misschien is het dus ook handig om een flag "portrait" te hebben, als deze true is, dan weet je dus dat je de ratio moet omdraaien (3:4 ipv 4:3). Als dat zelfs relevant zou zijn.
Gewijzigd op 12/10/2019 22:47:52 door Thomas van den Heuvel
 
- Ariën  -
Beheerder

- Ariën -

12/10/2019 23:17:40
Quote Anchor link
Ik heb ook enkele staande foto's. Weliswaar niet geschikt voor ankeilers, maar wel noemenswaardig voor in het CMS-systeem. Ik zal hier rekening mee houden.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.