Verhoudingen uitrekenen via dimensies

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

.NET Developer / Innovatieve software / Virtual Re

Functieomschrijving Als .Net developer werken aan innovatieve software waar onder andere gebruik gemaakt wordt van Virtual Reality? Bijdragen aan een organisatie waar je uitgedaagd wordt om continu verbeteringen en ontwikkelpunten te ontdekken en door te voeren? Werken in de omgeving Putten? Reageer dan nu voor meer informatie! Het pro-actief aandragen van verbeteringen voor de bestaande applicatie; Ontwikkelen van nieuwe functionaliteiten; Doorvoeren van aanpassingen en wijzigingen; Verantwoordelijk voor koppelingen met andere systemen; Op de hoogte blijven van technische ontwikkelingen. Functie-eisen Hbo werk- en denkniveau; Een afgeronde IT gerelateerde opleiding; Minimaal 1 jaar professionele ervaring als developer; Aantoonbare kennis van C#; Initiatiefrijke

Bekijk vacature »

Back end Progress/OpenEdge Developer

Hi-Systems in Oosterhout is op zoek naar Back-end Progress/OpenEdge developer die energie krijgt van het (door)ontwikkelen en onderhouden van software. Heb jij ook de ambitie om te werken met de meest toekomstbestendige en innovatieve softwareoplossingen binnen medicatiemanagement? Dat doen wij voor zorgorganisaties, maar vooral voor de patiënt! Doe jij mee?! Hi-Systems in Oosterhout HI-Systems maakt onderdeel uit van PharmaPartners B.V. Je komt bij HI-Systems in Oosterhout te werken in een team dat verantwoordelijk is voor de ontwikkeling van producten voor de tweedelijns zorg (ziekenhuizen en instellingen). Het zijn oplossingen voor medicijnzorg en voor o.a. apotheken. Binnen dit team werk je

Bekijk vacature »

ASP.NET Developer Transformatie 35+ vrije dagen

Functieomschrijving Ben jij een ASP.NET Developer en wil jij meer doen dan alleen developen? Ben jij ondernemend ingesteld en denk jij graag mee aan de visie en strategie van een organisatie? Dan is deze baan wat voor jou! Meedenken in de visie en strategie van de organisatie; Concepten ontwikkelen en deze uitdragen binnen de organisatie; Applicaties optimaliseren in ASP.NET; Innovatieve software ontwikkelen met onder andere AngularJS; Functie-eisen HBO werk- en denkniveau; 1 tot 4 jaar ervaring met bijvoorbeeld: ASP.NET, .NET of Java; 1 tot 4 jaar ervaring met: AngularJS of andere JavaScript versies; Bekend met Agile werken; Affiniteit met ondernemen.

Bekijk vacature »

Senior PHP Developer BDD Zorg

Functieomschrijving Ben jij een PHP Developer die out of the box denkt? Zoek jij naar de mogelijke als naar de onmogelijke oplossingen? Werk jij graag met kritische vraagstukken dat mensenlevens kan redden of kosten? Reageer nu en kom alles te weten! Ben jij iemand die energie krijgt van het ontwikkelen van een complexe PHP objectgeoriënteerde platform; Denk jij graag mee over de architectuur; Geeft een mooie schone code jou energie en doe jij er alles aan dat dit zo blijft; Vind jij het net zo belangrijk dat de huidige software goed onderhouden wordt; Denk jij graag out of the box;

Bekijk vacature »

Uniface / Ontwikkelaar / Beheerder / Defensie

Functieomschrijving Heb jij als Uniface Ontwikkelaar/Beheerder altijd al een bijdrage willen leveren aan een veiliger Nederland en als Uniface Ontwikkelaar/Beheerder altijd al verantwoordelijk willen zijn voor een levenskritische omgeving? Lees dan snel meer over deze te gekke Uniface Ontwikkelaar/Beheerder! Ontwikkelen en beheren Unifaceproducten; Installeren en configureren van Unifaceproducten Bouwen en onderhouden van complexe interfaces; Het maken van impactanalyses en functionele- en technische specificaties van systemen; Structureren, opslaan en de toegankelijkheid van databases. Functie-eisen Je bent hbo-gediplomeerd; Je hebt minimaal 3 jaar relevante werkervaring; Je bent bekend met Unifaceproducten Uniface Client / Server, Uniface Application Server en Uniface Web Services; Je

Bekijk vacature »

Senior Android Developer vacature

Je bent creatief. Je wilt verschil maken. Je gaat voor mobile. Voor het bedenken, ontwerpen en realiseren van sterke mobile-apps mag men jou ’s nachts wakker maken. Jij weet hoe je Android-apps met impact ontwikkelt en levert ze op tijd af. Of het nu gaat om betalen met een vingerafdruk, het delen van de bar-rekening of het mobiel aanpassen van de (sfeer-)verlichting in huis, jij weet welke integrale functionaliteiten toegevoegde waarde hebben voor de eindgebruiker. Jij zorgt er bovendien voor dat jouw apps het toonbeeld zijn van gebruikersvriendelijkheid en veiligheid. Omdat je breed georiënteerd bent, kun je ook prima buiten

Bekijk vacature »

Applicatiebeheerder

Stroom jij over van kwaliteit om wereldwijde waterproblemen aan te pakken? Kun jij wensen en eisen vertalen naar IT vereisten? En hou je van een dynamische omgeving, waarin jouw baan ertoe doet, jouw ideeën worden gehoord en waar je werkelijk het verschil kan maken voor jouw collega’s en het bedrijf? Zo ja, dan zijn wij op zoek naar jou voor de functie van: Applicatiebeheerder voor ons kantoor in Veghel Over de positie: Als applicatiebeheerder bij Megagroup Trading help je ons door ervoor te zorgen, dat de applicaties soepel lopen. Dit doe je samen met collega’s en externe partners. met een

Bekijk vacature »

Angular Developer gezocht in Twente - alle niveaus

Functieomschrijving Als Angular Developer kom jij hier dagelijks voor technische uitdagingen te staan. Uiteraard deins je daar niet voor terug. Je komt in een hecht team en jij gaat je focussen op nieuwbouw van (mobiele) applicaties, websites en interfaces, maar ook op het verder uitbouwen en onderhouden van bestaande applicaties, websites en interfaces. De focus van jouw werkzaamheden ligt op Frontend ontwikkeling. Je wordt enthousiast van het bouwen van gelikte (web)applicaties, je hart gaat sneller kloppen van UX Design en Singe Page Applications zijn bekend terrein voor je of wekken je interesse. Voorbeelden van recente projecten en dus projecten waar

Bekijk vacature »

Medior Microsoft Dynamics Developer

Jouw uitdaging: Ben jij sterk in het succesvol ontwikkelen van maatwerk componenten op het Dynamics platform? En wil je actief meewerken aan de ontwikkeling van ons Digital Customer Experience portfolio? Dan is dit iets voor jou! Voor de Digital Customer Experience afdeling (DCX) zijn we op zoek naar een Medior Microsoft Dynamics Developer. In deze functie ben je verantwoordelijk voor de succesvolle ontwikkelen van maatwerk componenten op het Dynamics platform bij toonaangevende organisaties. Denk daarbij aan het realiseren van integratie met front en backoffice systemen op basis van Azure PaaS of het ontwikkelen van complexe plug-ins. Daarnaast werk je actief

Bekijk vacature »

Ervaren C# .NET developer gezocht, hardware interf

Je bent een ervaren .NET C# developer woonachtig ergens tussen Dordrecht en Rotterdam en op zoek naar een nieuwe uitdaging? Binnen een leuke, kleine en informele club van enthousiaste mensen? En het bouwen van Windows Services en de communicatie tussen software en hardware interfaces spreken je aan? Wellicht dat dit bedrijf dan iets voor jou is. Voor een organisatie in de regio Ridderkerk zijn we op zoek naar een .NET C# developer. Het bedrijf richt zich op een specifieke branche binnen de logistieke sector. Dit doen ze inmiddels ruim 15 jaar en momenteel werken er ca. 50 mensen. Door het

Bekijk vacature »

Java Custom Software Developer

Jouw rol Als Java developer houd jij van uitdagende maatwerk oplossingen. Het liefste bouw je aan aan complexe en grootschalige oplossingen. Laatst zag je bijvoorbeeld nog een slimme oplossing voorbij komen die je graag zou willen uitwerken. Moet je daarvoor nieuwe technologie leren kennen, dan school jij jezelf bij. Soms moet je je collega's en de klant overtuigen om jouw idee te omarmen. Als jij dan het door jou aangebrachte idee ziet draaien dan kijk jij er alweer naar uit om de volgende oplossing te bouwen. Plaats in de organisatie Binnen onze Custom Software Development practice (CSD) werken we gezamenlijk

Bekijk vacature »

Gezellige PHP Developer gezocht!

Vacature Omschrijving Onze klant is actief in de domeinnamen en het beheer van duizenden websites. Een van de belangrijkste doelen is om het meest klantvriendelijke hosting provider van Nederland te worden. Ook is het streven om in deze branche de grootste te worden in Nederland, dit lukt al aardig! Daarnaast kom je te werken in een informele omgeving met een gemiddelde leeftijd van 30 jaar. Functieomschrijving Wegens uitbreiding van de afdeling development is onze klant op zoek naar een PHP developer. Als PHP developer ga je mee werken aan het integreren van verschillende soorten diensten. Ook ben je bezig met

Bekijk vacature »

.NET developer / C# / Webservices

Functieomschrijving Wil jij als .NET Developer bij deze organisatie in Tilburg als kartrekker in een Scrum team fungeren en je helemaal uitleven in de backend met C#? Krijg jij een grotere kick van high-security en high-availability .NET backend oplossingen dan van een gelikte frontend? Dan past deze functie jou perfect! Programmeren van high-availability en high-security applicaties in C#; Samen met je teamgenoten nieuwe applicaties/diensten ontwikkelen in .NET; Overleggen met de informatie analisten en testers; Ontwikkelen van webservices (WCF); 20% van je tijd besteden aan innovatie; Deelnemen aan projecten om nieuwe ketenpartijen toe te voegen; Bouwen van unit testen. Functie-eisen Beschikt

Bekijk vacature »

Business Intelligence developer

Jij ben niet bang om hard te werken. Uitdagingen zijn welkom. En problemen? Die zijn er om opgelost te worden of, nog beter, om voorkomen te worden! Voor jij aan de slag gaat met het ontwerpen van BI- en DWH-oplossingen, leg je eerst je oor te luister bij de klant. Zo weet jij wat de klant wil, en hoe jouw ontwerp eruit moet komen te zien. Simpel! Althans… met jouw Developer-kwaliteiten wel! Over deze BI vacature Als Business Intelligence Developer ga je zowel op locatie bij de klant aan de slag, als op een van de Sogeti-locaties. Je analyseert de

Bekijk vacature »

C# .NET webdeveloper gezocht, inhouse, afwisselend

Heb je ervaring als .NET C# webdeveloper en je bent op zoek naar een nieuwe baan in Den Haag? Bij een kleinschalig bedrijf met een korte lijnen en een informele maar ambitieuze sfeer? Waar je met de laatste ontwikkelingen kan werken op zowel back- als frontend? Wellicht dat dit iets voor jou is! Voor een full service webbureau in Den Haag zijn we op zoek naar een ervaren .NET C# webdeveloper. Het bedrijf bestaat uit ongeveer 40 mensen met in totaal circa 10 software developers. Binnen deze organisatie zal je samen met je team meewerken aan het onderhoud en de

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

17/10/2019 13:25:05
 
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.