Verhoudingen uitrekenen via dimensies

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ontwikkelaar MS Dynamics 365 Projecten

Samengevat: Deze werkgever is de kwaliteitsdienst in de tuinbouwsector. Ben jij een ervaren ontwikkelaar? Heb jij ervaring met Ms Dynamics 365 BC? Vaste baan: Ontwikkelaar Ms Dynamics 365 BC ICT MBO 3.500 - 5.000 Ontwikkelaar Ms Dynamics 365 BC Ons bedrijf bewaakt en bevordert de kwaliteit van producten, processen en ketens in de tuinbouw. Wij kenmerken zich door openheid, ruimte voor initiatief, collegialiteit en zelfontplooiing. Deze werkgever is een veelzijdige organisatie. Je werkt voor de eigen IT organisatie. Zij werken met moderne technologie en staan open voor innovatie. Functie: Voor de vacature als Ontwikkelaar Ms Dynamics 365 BC Roelofarendsveen MBO

Bekijk vacature »

Applicatiebeheerder/ Ontwikkelaar

Dit ga je doen - Verantwoordelijkheid dragen voor het complexe applicatielandschap; - Schakelen met eindgebruikers en leveranciers; - Verdeling in werkzaamheden tussen dagelijks beheer ontwikkelen; - Het analyseren van de behoeften van gebruikers en het vertalen hiervan naar functionele specificaties voor de applicaties; - Actief bijdragen aan het leveren van passende oplossingen voor het applicatielandschap. Hier ga je werken Deze organisatie, gevestigd in de regio van Amsterdam is een van de meest toonaangevende mediaorganisaties in Nederland. Door de organisatiecultuur krijg jij veel ruimte om initiatief te nemen en zelfstandig aan het werk te gaan. Samen met het IT team zorg

Bekijk vacature »

Web Developer

Bedrijfsomschrijving ENGIE Nederland is onderdeel van de beursgenoteerde ENGIE Groep. ENGIE is actief in 70 landen, met wereldwijd 150.000 medewerkers. Als groep is het de missie om bij te dragen aan de verduurzaming van de wereld. ENGIE Energie biedt energiediensten aan particulieren en grootzakelijk en gaat de uitdagingen van de energietransitie aan door het beschikbaar maken van duurzame energie, het streven de klimaatverandering tot een minimum te beperken, leveringszekerheid te bieden en zorg te dragen voor een verantwoord gebruik van de beschikbare resources. ENGIE Energie investeert daarom in hernieuwbare energiebronnen zoals zon, wind en bio-gas. Functieomschrijving Heb jij veel ervaring

Bekijk vacature »

IT Manager team PaaS

TenneT is hard groeiende om haar ambities waar te kunnen maken. Zo nemen wij een leidende rol in het aanjagen van de energietransitie. Het werven van nieuw talent speelt daarin een cruciale rol. Wij zijn op zoek naar een gedreven Lead PaaS die hieraan wil bijdragen en misschien ben jij dat wel? Jouw bijdrage aan TenneT Je wordt de Teammanager (Lead) van een nieuw team binnen de afdeling Basic van Information Technology and Facilities (ITF) van TenneT. Het team heet Platform as a Service. Hier wordt elke dag in een goede sfeer met zijn allen hard gewerkt om vanuit IT

Bekijk vacature »

Back-end Programmeur

Functieomschrijving Heb jij kort geleden je HBO ICT in ontvangst mogen nemen? Of ben je toe aan een nieuwe uitdaging? Voor een ambitieuze werkgever in de regio van Breda zijn wij op zoek naar een Back-end programmeur met affiniteit met C#.NET, SQL en MS Access. Samen met team bestaand uit ware ICT professionals ben je verantwoordelijk voor het bouwen van maatwerk software voor hun klanten. Belangrijk is dat je kennis of ervaring hebt van C#.NET en SQL. Je toont een flexibele en sociale houding naar klanten toe. Je denkt in nieuwe mogelijkheden & gaat graag de uitdaging aan. Bedrijfsprofiel De

Bekijk vacature »

Implementatie specialist

Standplaats: Honselersdijk Aantal uren: 32 – 40 uur Opleidingsniveau: HBO werk- en denkniveau Ben jij de implementatie expert die onze klanten helpt bij het integreren van de Greencommerce software? Ben jij daarnaast communicatief sterk, denk jij graag in verbeteringen en heb je ervaring met ICT? Lees dan snel verder! Bedrijfsinformatie Jem-id is een grote speler op het gebied van software ontwikkeling. Zo zijn wij continu bezig met het ontwikkelen van de meest innovatieve software voor de AGF- en sierteeltsector. We creëren oplossingen die er toe doen en verbinden klanten niet alleen op technisch vlak, maar zoeken ook de verbinding in

Bekijk vacature »

Back end developer Onderwijssoftware

Functie Als back end developer kom jij terecht in een klein, maar hecht team bestaande uit 5 andere developers (waarvan 2 senioren, 2 medior en 1 junior). Met de gezamenlijke missie om “ieder kind te helpen met onze software” wordt er dagelijks gepassioneerd en hard gewerkt aan ons in-house ontwikkeld platform. Deze software is gebaseerd is op AI, machine Learning en wetenschappelijke inzichten. Dagelijks zul jij werken met onze high traffic webapplicatie. We hebben ruim 300.00 gebruikers en meer dan 2 miljard records waar je te maken mee krijgt! Verder zul jij je bezighouden met: – Het ontwikkelen van hoogwaardige

Bekijk vacature »

Fasttrack learning & development voor Java dev

Wat je gaat doen: Wij zoeken enthousiaste en ambitieuze junior en medior ontwikkelaars die toe zijn aan de volgende stap in hun carrière. Wij helpen je op je pad naar senior ontwikkelaar door ons fasttrack learning en development programma. Na een kort en intensief programma ga jij aan de slag bij klanten van DPA. Daarnaast krijg je veel ruimte om je te ontwikkelen als persoon en als specialist. De eerste maand gaan we aan de slag om je certificeringen te behalen waaronder OCP (Oracle Certified Professional). Daarnaast nemen we een deepdive in Spring Boot. Ook laten we je kennismaken met

Bekijk vacature »

Java Developer

Functie Wat ga je doen als Java developer? Jij komt terecht binnen een informeel team waarin je verantwoordelijk bent voor de backend systemen voor grote klanten als Ziggo en KPN. Als Medior Java developer werk je in teamverband en soms individueel. Gedurende de werkweek zal je veelvuldig sparren met je collega’s voor een goede implementatie van de software. Ben jij een echte Java developer? Ben je geïnteresseerd in de nieuwste technieken en de laatste ontwikkelingen? Dan ben je hier aan het juiste adres! Eisen Wat wordt er van jou verwacht? • Minimaal HBO/WO denk- en werkniveau; • Analytisch sterk, open

Bekijk vacature »

Medior C# Developer

Samen met het development team zorg je ervoor dat alle systemen achter de schermen vlekkeloos werken. Wat doe je als Medior C# Developer bij Coolblue? Als C# developer doe je regelmatig mee aan brainstormsessies over user experience, data en task flow met de UX Designer, Product Owner en Data Scientist in je team. Daarnaast schrijf je op zichzelf staande, consistente en testbare code die goed onderhoudbaar en toekomstbestendig is. Ook C# Developer worden bij Coolblue? Lees hieronder of het bij je past. Dit vind je leuk om te doen Werken met verschillende soorten data-opslag, zoals Oracle of AWS. Problemen oplossen

Bekijk vacature »

Senior Fullstack Developer (GOLang, TypeScript)

Bedrijfsomschrijving Our client is one of the large worldwide accounting firms. Functieomschrijving We are looking for a senior (all-round) developer (Project On Demand / Tax Technology) Uses as much as possible technology in support of the development process: Git, Jenkins, Docker, npm, skaffold, helm, etc. We are looking for a real hands-on developer; ie not a team lead or other managerial-style role; Acts with integrity both internally and externally and takes personal responsibility in this respect; Curious about the developments within their field and driven to make a difference with the team; Able to empathize with colleagues and stakeholders and

Bekijk vacature »

Als Lead PHP developer bijdragen aan het onderwijs

Functie Als Lead PHP developer zet je samen met het team en de andere lead developers de technische lijnen uit als het gaat om het ontwikkelen van de applicaties en bepaal je samen met de PO waar elke sprint aan gewerkt zal worden. Je kunt op basis van een user story een goede aanpak formuleren en een planning opstellen, en andere hierin meenemen. Wanneer je team code schrijft verwacht je degelijke oplossingen, bij voorkeur gebruik makend van Domain Driven Design. Je ziet toegevoegde waarde in het beoordelen van het werk van collega’s om zo samen te streven naar hoge kwaliteit

Bekijk vacature »

Junior .NET Developer

Dit ga je doen Als junior .NET Developer lever je met jouw oplossingen direct een bijdrage aan de bedrijfsprocessen van de klanten. Werkzaamheden waar jij je zoal mee bezig houdt zijn; Het ontwikkelen, onderhouden en optimaliseren van de draaiende platforms van de klanten; Softwareontwikkeling middels C#, .NET; Klantcontact om de wensen te bespreken en uit te werken; Optimaliseren van de (huidige) bedrijfsprocessen; De IT-afdeling bestaat uit 30 personen verdeeld over 3 teams. Het team waar je in terecht komt bestaat uit ongeveer tien man. Het is een team wat bestaat uit betrokken collega’s, waar iedereen bereidt is om elkaar te

Bekijk vacature »

Full stack ontwikkelaar Laravel, Vue.js

Functie Als ontwikkelaar binnen deze organisatie hou jij je voornamelijk met lopende projecten voor de verschillende klanten. Zo bouw je de ene dag aan prijsschifting systemen en de andere dag onderzoek je crawlers en stel je ze zo in dat de data goed binnen komt binnen het systeem. Daarnaast bouw je mee aan dashboards en ben je dus constant bezig met het verbeteren van het platform. Er is een vaste werkwijze, zo werken ze met Trello kaarten en onderverdelen ze deze aan het begin van iedere week onder de developers. Dit wordt door de lead developer gedaan, maar in samenspraak

Bekijk vacature »

Junior .NET developer

Functie Wij zijn bezig met het ontwikkelen van een nieuw product en wij hebben jouw hulp hierbij nodig! Als junior .NET ontwikkelaar krijg jij de kans om samen met ons deze nieuwe uitdaging aan te gaan! Momenteel bestaat ons team uit drie interim Software Engineers. Twee hiervan zijn zeer ervaren .NET specialisten die inmiddels hun strepen in dit vakgebied al hebben behaald. Ook hebben wij een junior als onderdeel van ons team die zich op dit moment nog bezig houdt met de Front-end (Angular/TypeScript), maar zich nu ook meer gaat verdiepen in de backend. Wij willen ons team graag verder

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

28/03/2024 14:55:09
 
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.