Verhoudingen uitrekenen via dimensies

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior Software developer PHP

Functie Jij als senior PHP ontwikkelaar komt te werken in 1 van onze SCRUM teams. Momenteel werken er zo’n 30 developers binnen onze organisatie Jij gaat de brug zijn tussen het bouwen van verschillende functionaliteiten binnen onze applicaties en deze vervolgens te integreren in onze centrale hub. Je start je dag om 9 uur met een stand up en dan pak je je taken op voor de dag. Een greep van jouw taken zijn: – Het bedenken en uitbouwen van features binnen de verschillende applicaties – Onderhouden van CI/CD pipelines – Bezighouden met Security & Privacy Eisen • Minimaal 4

Bekijk vacature »

PHP Laravel developer

Functie omschrijving Weet jij alles van Laravel en krijg je energie van het ontwikkelen van software hiermee? Laat snel wat van je horen want wij zoeken een PHP/Laravel developer in regio 's-Hertogenbosch. Jouw taken zullen bestaan uit: Softwareapplicaties ontwikkelen en verder optimaliseren in veel diverse projecten op basis van Agile/Scrum. Uitleg geven over software en applicaties Klantcontact hebben over bestaande applicaties. Documentatie schrijven over applicaties. Techstack: PHP, Laravel, HTML, CSS, Javascript. Bedrijfsprofiel Deze organisatie zit in de regio van 's-Hertogenbosch en is een klein softwarebedrijf. Er werken ongeveer 15 medewerkers, verdeeld in meerdere teams, zoals back-end en front-end development, projectmanagement

Bekijk vacature »

Machine Software Developer

Bij een bedrijf in de machinebouw, regio Roosendaal, zijn we op zoek naar een: Machine Software Developer Waar ga je werken? Onze opdrachtgever is gespecialiseerd in de grondverzetmachines. Al meer dan 50 jaar leveren ze zowel nationaal als internationaal diverse machines. Het is een familiebedrijf met een informele werksfeer. Wat ga je doen? Als Machine Software Developer ben je verantwoordelijk voor: - Je ontwerpt, ontwikkelt en debugt software voor machinebesturingssystemen en complexe landbouwmachines; - Je stelt gebruikersinterfaces op (cabinedisplays); - Op termijn ga je softwareprojecten leiden voor specifieke machines; - Inclusief planning, documentatie en validatie; - Om specificaties te verifiëren

Bekijk vacature »

Software Developer C# - Deventer

Software Developer C# – Deventer Bijdragen aan de toekomst van het onderwijs! Ben jij op zoek naar een dynamische omgeving waar vol enthousiasme wordt gewerkt aan software voor interactieve dashboard- en analysetoepassingen ter verbetering van het onderwijs? Dan zijn wij het bedrijf voor jou! TIG is een bedrijf met een informele en ondernemende werksfeer, waarbij goede ideeën snel leiden tot concrete acties. Wij zijn een software ontwikkelorganisatie en focussen ons op het ontwikkelen en implementeren van oplossingen voor het leveren van managementinformatie, datavisualisatie en analyses voor het onderwijs. Met onze dashboard- en analyseoplossingen zetten scholen gegevens om naar betekenisvolle informatie.

Bekijk vacature »

Web Application Developer

Dit ga je doen Samen met het team werk je aan de visualisatie functionaliteiten en hoe dit gebruikt kan worden in een operationele setting; Het ontwerpen, ontwikkelen, onderhouden en leveren van support betreft het Warehouse Management Systeem en de bijbehorende web visualisaties; Je gebruikt hierbijde tools WebGL en ASP.net; Het meewerken in implementatieprojecten; Het leveren van Go-Live Support; Sparren met jouw Amerikaanse collega's. Hier ga je werken Voor een internationale organisatie in de transport zijn wij momenteel op zoek naar een Web Application Developer. Ze zijn wereldwijd de grootste speler en lopen voorop met het automatiseren van alle processen van

Bekijk vacature »

Laravel developer

Zie jij mogelijkheden om onze tooling technisch te verbeteren en uit te bouwen? Over Jobmatix Jobmatix is een innovatieve en internationale speler op het gebied van jobmarketing. Onze jobmarketing automation tool helpt organisaties bij het aantrekken van nieuw talent door vacatures digitaal, geautomatiseerd en op een efficiënte manier te adverteren en onder de aandacht te brengen bij de doelgroep op 25+ jobboards. Volledig performance-based, waarbij organisaties betalen op basis van cost per click of cost per applicant. Maandelijks wordt onze jobmarketing automation tool al gebruikt door vele directe werkgevers, intermediairs en mediabureaus, waaronder Picnic, Rijkswaterstaat, AdverOnline, Schiphol, DPA, Teleperformance en

Bekijk vacature »

PHP Back-end Developer

Vacature details Vakgebied: Software/IT Opleiding: Starter Werklocatie: Nijmegen Vacature ID: 13633 Introductie OUr client develop websites, webshops, and digital environments that are used by many visitors daily. They are seeking an experienced PHP-Developer Back-end to join the team. If you're looking for a position where you can tackle challenging, innovative, and multidisciplinary ICT projects and make a difference, this vacancy might be for you! Functieomschrijving As a PHP developer, you'll develop websites and digital environments used by many visitors daily. You'll work as a back-end developer and want to continuously develop in this field. You can work independently and efficiently,

Bekijk vacature »

Ervaren Software Developer

Functie omschrijving Ben jij een ervaren Software Developer, en heb je ervaring met technieken zoals C#, MS Access & SQL? Vind jij het leuk om maatwerk software te ontwikkelen voor klanten in een specifieke branche? Dan is dit de baan voor jou! Als ontwikkelaar ben jij samen met een team van 12 collega’s verantwoordelijk voor het bouwen van nieuwe functionaliteiten en het uitbreiden van de core applicatie. Belangrijk is dat je ervaring hebt met C# en MS Access. Je bent flexibel en klantvriendelijk ingesteld, omdat het belangrijk is om de klanten zo goed mogelijk van dienst te kunnen zijn. Thuiswerken

Bekijk vacature »

Network Engineer (f/m/d) in Heidelberg

Network Engineer (f/m/d) The IT Services team operates and supports the IT infrastructure and services at EMBL headquarters in Heidelberg and at the laboratory’s sites in Barcelona and Rome. As part of IT Services, the Network team is responsible for managing and developing the network infrastructure in our data centres, on campus, and to our external network providers. As a leading scientific institution with highly data-intensive research, extensive data flows at and between the laboratory’s six sites and to the Internet, EMBL is connected to national and international scientific networks using state-of-the-art technologies from vendors including Cisco, Extreme Networks and

Bekijk vacature »

Software Ontwikkelaar

Java/Kotlin Developer Ben jij een ervaren Java/Kotlin developer met een passie voor het automatiseren van bedrijfsprocessen? Wil je graag deelnemen aan uitdagende projecten bij aansprekende klanten? En ben je op zoek naar een professioneel, ambitieus en dynamisch bedrijf om je carrière verder te ontwikkelen? Kom dan ons team bij Ritense in Amsterdam versterken! Zo ziet de functie eruit: Als Java/Kotlin developer bij Ritense ben je verantwoordelijk voor de ontwikkeling en implementatie van applicaties die bedrijfsprocessen automatiseren, zodat onze klanten slimmer, efficiënter en klantgerichter kunnen werken. Als developer ben je in de lead en zorg je voor de correcte oplevering van

Bekijk vacature »

Software Ontwikkelaar

Functie omschrijving Voor een echt familiebedrijf in de omgeving van 's-Hertogenbosch ben ik op zoek naar een Software Developer. Jij gaat in de functie van Software Developer werken met C# en .NET framework Jij gaat maatwerk software ontwikkelen en softwareoplossingen creëren. Daarnaast optimaliseer je de bestaande software. Oplossingen waar de klant echt iets aan heeft, jij krijgt er energie van op dit te realiseren. Je gaat werken in een Microsoft omgeving(ASP.NET) en gebruikt daarnaast C# en MVC. Samen met het huidige IT team binnen deze organisatie verwerk je de wensen van de klant tot een (eind)product. Bedrijfsprofiel Deze organisatie is

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

C# ontwikkelaar

Functie omschrijving Werk jij graag met C# en het .NET framework in een leuk familiebedrijf? Lees dan snel verder! Jouw takenpakket hierbij is: Je gaat maatwerk software ontwikkelen en softwareoplossingen creëren. Je gaat werken in een Microsoft omgeving (ASP.NET) en gebruikt daarnaast C# en MVC. Samen met het huidige IT team binnen deze organisatie verwerk je de wensen van de klant tot een (eind)product. Daarnaast optimaliseer je de bestaande software. Bedrijfsprofiel Deze organisatie is gevestigd in de omgeving van Best en is een echt familiebedrijf. Je komt te werken in een klein team van developers, die zich voornamelijk bezighouden met

Bekijk vacature »

Front-end developer wanted! (Angular, React, Vue.j

Functie Under the guidance of 3 account managers, one of whom will be your point of contact within your expertise, you will start working for various clients. He or she will help you find a suitable and challenging assignment. Naturally, they will take your situation, experience and (technical) ambitions into account. The assignments last one to two years on average. This allows you to really commit to a project and make an impact as a consultant. Besides the assignment, you will regularly meet your colleagues from the IT department to share knowledge or discuss new trends, for example. Master classes

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 »
- 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

25/04/2024 20:57:36
 
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.