Verhoudingen uitrekenen via dimensies

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

C# (WPF) developer gezocht, omgeving Ridderkerk

Voor een softwarebedrijf in de omgeving van Ridderkerk, dat zich richt op een specifieke branche binnen de logistieke sector, zijn we op zoek naar een .NET C# developer met bij voorkeur kennis van WPF en MVVM. Het gaat hier om een bedrijf van circa 20 mensen met een informele leuke bedrijfscultuur en korte lijnen. Er werken meerdere .NET developers maar het team waarbinnen je komt te werken bestaat uit 3 .NET C# developers. Het product waar je aan werkt is bedrijfskritisch en wordt 24/7 gebruikt. Het is een innovatief product dat recentelijk in de markt is gezet maar waar nog

Bekijk vacature »

Full stack software .NET C# developer, domotica me

Voor een bedrijf in de regio Hendrik Ido Ambacht zijn we op zoek naar een fullstack .NET C#developer. Het gaat hier om een bedrijf dat systemen ontwikkeld die via domotica oplossing bieden voor maatschappelijke instellingen. Zo verwerken hun systemen meldingen waarover ze rapporteren, maar ook zorgen ze voor de automatisering van toezicht. Het systeem bestaat uit apps, web interfaces, backend en BI rapportage tools. Het gaat het hier om een MKB bedrijf van circa 70 mensen met een team van 5 developers. Bestaande uit hardware, embedded en backend developers. Momenteel is er daarom sterke behoefte aan iemand die zowel back-

Bekijk vacature »

.NET Developer vacature bij fijn informeel bedrijf

Functieomschrijving Als .NET developer kom je aan de "full stack" te werken wat betekent dat je zowel backend werkzaamheden zal uitvoeren (ASP.NET / C#) en ook aan de voorkant je goed weet te redden middels JavaScript, HTML en CSS. Zoals in de eerdere tekst vermeld gaat het om een eigen ontwikkeld product dat je in een hecht team gaat doorontwikkelen. Mocht je meer willen weten over de functie en organisatie neem dan contact met ons op per mail of telefoon, in een kort telefonisch gesprek leggen we graag precies uit hoe je werkweek eruit ziet en wat je verder kunt

Bekijk vacature »

Backend Developer

Asito zoekt een Backend Developer. Functie omschrijving Samen met je collega’s onderhoud je de bestaande applicaties en je houdt je bezig met nieuwe projecten. Je begrijpt dat de applicaties die hier gebouwd worden complex zijn, dus technische uitdaging ga je hier genoeg vinden. Daarnaast word je aangemoedigd om altijd buiten het boekje te denken en de grenzen van mogelijkheden op te zoeken. Dit maakt dat jij je hier in een razend tempo nog verder gaat ontwikkelen. Dit doe je altijd met de nieuwste technieken. Innovatie is ontzettend belangrijk in onze branche dus nieuwe technieken moeten altijd snel geïntegreerd worden. Momenteel

Bekijk vacature »

Mendix Developer (Lead)

Wil jij als de lead Mendix developer jouw technische skills toepassen bij diverse opdrachtgevers? Wil jij samen met de managers en de directie de Mendix tak naar een hoger level tillen? Dan is dit de uitdaging die bij jou past! Organisatie Onze relatie helpt diverse organisaties, van start-ups tot grote multinationals. Hun business focus bestaat uit verschillende bedrijven die allemaal bezig zijn met een digitale transformatie. De wereld verandert snel en onze relatie laat dat duidelijk zien aan de klanten. Zij lopen voor op de technieken en de methodes die door vele klanten gewild zijn. Dit doen zij op continue

Bekijk vacature »

.NET Developer Medicatie / Apotheek

Jij krijgt een kick van het ontwikkelen van complexe software. Voor onze vestiging in Heerenveen zoeken wij een .NET Developer Medicatie / Apotheek die graag met de laatste Microsoft-tools en -technieken wil werken. Interessant? Lees snel verder! Jouw baan Je bent verantwoordelijk voor het ontwerpen, ontwikkelen, ondersteunen en onderhouden van de module Medicatie / Logistiek & Apotheek. Je gaat nauw samen werken met zowel de interne als externe klant om nieuwe functionaliteiten te ontwikkelen om onze klanten te ondersteunen in hun werkproces. Het gaat om complexe ICT-producten die feilloos moeten functioneren binnen de complexe omgeving van een zorgorganisatie. ChipSoft maakt

Bekijk vacature »

Database Developer / SQL Ontwikkelaar / Analist

Functieomschrijving Database / SQL / Ontwikkelaar / Analist De requirements in kaart brengen van de klant Het analyseren en ontwerpen maken de bedrijfsprocessen van de klant Het maken van functioneel ontwerp Het ontwikkelteam aansturen De database ontwikkelen en onderhouden Queries schrijven en inrichten Tabellen maken in SQL Programmeren in lowcode Het testen en uitleveren van nieuwe functionaliteiten naar de acceptatie en productieomgeving Het bieden van customer support Functie-eisen HBO werk en/of denkniveau, opgedaan door ervaring of opleiding is een eis; Ruime ervaring met SQL (tabellen maken / stored procedures / inrichten) is een eis;Zowel Nederlands als Engels spreken en schrijven;

Bekijk vacature »

BI Developer / Data Engineer / ETL / Duizenden geb

Functieomschrijving Ben je een ervaren BI Ontwikkelaar / Data Engineer en heb je ervaring / affiniteit met Machine Learning en A.I.? Kent SQL geen geheimen voor jou en wil je graag hands-on werken bij een organisatie die van groot belang is voor de maatschappij? Dan is dit de unieke mogelijkheid. Reageer snel! Bieden van technische ondersteuning aan users bij het verzamelen, verwerken, analyseren en presenteren van data; Uitleveren van de juiste datasets aan users; Meewerken aan het opzetten van beveiligde dataverbindingen klanten in de medische branche; Optimaliseren van de huidige omgeving, zodat huidige rapportages sneller visueel gedeeld kunnen worden; Onderzoeken

Bekijk vacature »

.NET Developer / C# / Microservices / Azure

Functieomschrijving Ben jij een senior .NET Developer en wil jij een bijdrage leveren aan een gezondere wereld door innovatieve software te ontwikkelen? Wil jij werken met de nieuwste technieken zoals C#, Docker en Azure? Lees dan nu verder! Het ontwikkelen van software inclusief vormgeving, implementaties, integraties en testen; Het in kaart brengen van software requirements; Zorgen dat jouw code kwalitatief hoogstaand is; Uitvoeren van risico analyses; Bijdrage leveren aan het continuous quality improvement process. Functie-eisen Minimaal 3 jaar ervaring als .NET Developer; Je hebt ervaring met C#, Azure Devops of TFS; Je hebt ervaring met ASP.NET Core, MVC, Docker en

Bekijk vacature »

Progress Developer / #1 software leverancier binne

Functieomschrijving Ben jij een ervaren Progress Developer die graag nog nieuwbouw ontwikkelt? Wil je daarnaast jouw hersenen kraken voor het automatiseren van complexe bedrijfsprocessen? Lees dan snel verder en kom erachter of deze rol als Progress Developer iets voor jou is! Uitvoeren van analyses ter bevordering van de betrouwbaarheid en performance van de bedrijfskritische applicatie; Meedenken over de architectuur en tevens waarborgen van de architectuur; Troubleshooten van complexe incidenten; Je deelt graag je kennis aan je collega’s; Maken van ontwerpen, schrijven van documentatie en het testen van de Progress applicatie; Implementeren van nieuwe functionaliteiten en het verzorgen van nazorg. Aanroepen

Bekijk vacature »

Lead Java Developer / REST / Docker / AWS / IoT

Functieomschrijving Wil jij als Lead Java Developer werken aan tal van high-tech en innovatieve (maatschappelijk verantwoordelijke) oplossingen voor 's werelds grootste organisatie in de technologie? Spreekt het je aan om 60% van de tijd aan de slag te gaan met o.a. Java 8+, Spring, Microservices, Docker en REST en de overige tijd te besteden aan architectuur- en toolkeuzes, het begeleiden van ontwikkelaars en het bepalen van een visie voor een zeer ambitieus DevOps team? Lees dan nu verder! Je werkzaamheden als Lead zullen onder andere bestaan uit: werken aan de ontwikkeling met Java, Spring, REST API's, Microservices, Docker en AWS

Bekijk vacature »

Systeembeheerder Linux

Kom werken bij Bakker&Spees! Werken bij Bakker&Spees betekent werken in een innovatief, op de bouw en infrastructuur georiënteerd IT-bedrijf met een zelfsturend team van 40 medewerkers. Omdat we flink gegroeid zijn en we te maken hebben met steeds meer eisen, zoals ISO certificering, hebben we bij systeembeheer behoefte aan een extra paar handen. Wat ga je doen: Als systeembeheerder Linux variëren je taken van het beheer van de mailserver en de pbx, het configureren van Vlans op switches en routers tot het automatiseren van de configuratie van een PostgreSQL cluster met behulp van Ansible. Maar ook het ondersteunen van je

Bekijk vacature »

Software Ontwikkelaar

Functieomschrijving Ben jij de Software Ontwikkelaar met 5 tot 10 jaar ervaring en heb je daarnaast ervaring met elektronica en pcb-platen? We vertellen graag meer over deze functie. Coderen en programma’s ontwerpen doe jij met je ogen dicht. Jij hebt alles in huis om applicaties zelfstandig slimmer dan voorheen te maken. Wat valt er nog meer als Software Ontwikkelaar onder je takenpakket? - Ontwerp, implementatie en testen van software modules op het gebied van betaalautomaten - Analyseren van veldproblemen - Ontwikkelen en opbouwen van kennis binnen het vakgebied - Integreren van software modules in het eindproduct - Deelnemen aan testen

Bekijk vacature »

SQL Developer / BI / Miljoenen eindgebruikers

Functieomschrijving Altijd al aan de slag willen gaan als Senior SQL Developer bij één van de meest vooraanstaande verzekeraars in Nederland? Wil jij je richten op het bedenken, ontwerpen, bouwen en implementeren van uiteenlopende BI oplossingen vanuit data van miljoenen gebruikers met de Microsoft BI Stack, T-SQL, PowerShell en Datawarehousing? Lees dan nu verder! Analyseren, ontwerpen, ontwikkelen en documenteren van BI oplossingen en complexe BI applicaties (met tools als T-SQL, PowerShell, SAS, SSIS, BIML BODS en BOXI) Maken van technische ontwerpen, data analyses en adviseren over de datawarehouse; Ontwerpen van functionele specificaties voor de dashboards en rapportages; Schakelen met stakeholders

Bekijk vacature »

.NET C# developer gezocht, Dordrecht

Ben je een .NET C# developer die in Dordrecht woont, of in de omgeving hiervan, en op zoek is naar een nieuwe baan? Bij een bedrijf met betrokken collega’s, die elkaar graag helpen, binnen een informele cultuur? En aan een succesvol product wilt werken dat constant verder ontwikkeld wordt? Voor een bedrijf in Dordrecht zijn we op zoek naar verschillende C# developers. Het bedrijf richt zich op de ontwikkeling van software voor een specifieke branche en heeft circa 5000 gebruikers. De organisatie bestaat uit circa 20 mensen waarvan 6 .NET developers, 1 architect en 3 software testers. Het werk bestaat

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/05/2020 08:58:25
 
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.