Verhoudingen uitrekenen via dimensies

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

C# Developer /SaaS applicaties/MVC/ SQL/ 4.000 eur

Functieomschrijving Ben jij een .NET (C#) Developer wil werken in een IT-minded organisatie? Heb je kennis van MVC en SQL? Wil jij werken aan in-house ontwikkelde applicaties? Houd jij de nieuwste technieken in de gaten om het ontwikkelproces beter te laten verlopen? Lees dan snel verder! Nieuwbouw, onderhoud en bugfixing van de applicaties; Het produceren van code met een hoge kwaliteit; Hulp bieden aan jouw collega's met verschillende (complexe) technische kwesties; Kwaliteitsmonitoring van het gehele project, incl. de opgeleverde wijzigingen; Het waarnemen van verbetermogelijkheden en deze op de planning zetten. Functie-eisen Uitgebreide werkervaring met C#; Kennis van MVC en SQL;

Bekijk vacature »

Fullstack Developer Angular 6 Java Complexe omgevi

Functieomschrijving Ben jij toe aan een nieuwe uitdaging binnen een complexe technische omgeving en wil jij met je ruime kennis van Java bijdragen aan een optimaal wegennet? Dan is dit de vacature voor jou! Ontwikkelen van innovatie applicaties met behulp van Angular 6 & Java; Overleggen en samenwerken met architecten en Product Owners; Werken binnen een multidisciplinair Scrumteam met betrekking tot analyse, design en ontwikkeling; Samenwerken en ondersteunen van testers in het proces van automatische regressietesten. Functie-eisen Afgeronde HBO- opleiding (Technische richting is een pre); Minimaal 2 jaar relevante werkervaring als Fullstack Developer; Een passie voor techniek en programmeren; Technologieën,

Bekijk vacature »

ABAP developer

One of our clients, an organisation, is looking for an experienced Freelance/interim ABAP developer Project overview For a client of mine I'm looking for a ABAP/CRM developer for a challenging project in Utrecht. The client is searching for somebody who has experience as a developer SAP CRM, ABAP and PI/PO. Details of the ABAP developer job: Start date: 01-01-2020 Project length: 12 months Hours per week: 36 Location: Utrecht Required skills for this ABAP developer: 5 years' work experience as CRM developer 3 years' work experience as ABAP developer 3 years' work experience as PI/PO developer Good English or Dutch

Bekijk vacature »

C# developer / Azure Cloud / Fullstack / 5500 euro

Functieomschrijving Developer / Software engineer / Fullstack / Microsoft C# .Net / Azure cloud Bouwen van Windows-, web- en mobile applicaties; Bouwen van nieuwe applicaties en de doorontwikkeling van bestaande applicaties; Uitzetten van de lijnen op architectuur niveau samen met de solution architect; Oplossen van complexe vraagstukken; Coachen en ontwikkelen van de minder ervaren developers binnen het scrumteam; Schakelen met de business. Functie-eisen Afgeronde HBO opleiding richting Informatica of vergelijkbaar; Minimaal 5 jaar ervaring als fullstack developer; Ervaring met Microsoft C# / SQL server; Ervaring met Azure is een eis; Ervaring met Angular is een pré; Je bent enthousiast, communicatief,

Bekijk vacature »

Informatiemanager (1 fte)

Het Regio College is een moderne en overzichtelijke onderwijsorganisatie in metropool regio Amsterdam. De Dienst Bedrijfsvoering (waaronder de teams Innovatie Centrum Automatisering - ICA, Studentenadministratie, Financiële administratie, Personeel- en Salarisadministratie, Facilitair Beheer, Huisvesting en Bedrijfsbureau vallen) ondersteunt en adviseert de onderwijsteams en diensten van het Regio College op uiteenlopende gebieden. Het team ICA is per 1 februari 2020 op zoek naar een: Informatiemanager, 1 fte (40 uur). » Je werk Je verricht werkzaamheden op strategisch en tactisch niveau. Jij zorgt voor een optimaal ingericht applicatielandschap dat aansluit op de wensen en behoefte van de organisatie. Informatiemanagement (IM) als proces weet

Bekijk vacature »

C++ / Developer / Complex / Architectuur

Functieomschrijving Wil jij als C++ Developer meebouwen aan complexe systemen die levensreddende operaties ondersteunen? Ben jij de C++ Developer die zijn hand niet omdraait voor de meest uitdagende C++ vraagstukken? Dan is deze C++ rol jou op het lijf geschreven! Je wordt verantwoordelijk voor de codegeneratie en de onderliggende architectuur; Je zorgt ervoor dat de frameworks en architectuur continue doorontwikkeld wordt en dat nieuwe technologieën zoals Big Data en machine learning in de architectuur opgenomen worden; Creëren van robuuste, betrouwbare en veilige omgeving; Maken, onderhouden en doorontwikkelen van onze in C++ ontwikkelde architectuur in een Linux omgeving. Functie-eisen Hbo-gediplomeerd; Minimaal

Bekijk vacature »

(jr.-sr.) Support Engineers m/v (IT) (Amsterdam, C

SUPPORT ENGINEER Ben jij technisch onderlegd, klantgericht en heb je de ambitie om je op het gebied van IT verder te ontwikkelen? Dan is onze functie van Support Engineer écht iets voor jou! Wegens sterke uitbreiding zoeken wij verschillende kandidaten voor deze vacatures op verschillende kennisniveaus (junior, mid career tot senior) Wie zijn wij? NFOrce Internet Services is gespecialiseerd in het wereldwijd leveren van hosting- en internetdiensten aan particulieren en bedrijven. Lang voor ons officiële begin in april 2003, hebben wij een ongeëvenaarde waarde voor onze klanten gecreëerd -- niet door het aanbieden van een sub-standaard product tegen een lage

Bekijk vacature »

IT OFFICER

ZARA,LELYSTAD, IT OFFICER The IT Officer is responsible for managing issues that users have with telephone systems, hardware and software, in the offices and the warehouse. Administer software and hardware resources (PCs, PDAs, printers, etc.) Planning, coordination and carrying out interventions between central departments and the centre. Development of applications as required by the head office Management, support and resolution of issues for users Administration of Active Directory (Software Permits for users) Printing services Configuration of Mobile Terminals (Windows Mobile and Android) Configuration of Wireless Devices Hardware and equipment modelling Communication with external and internal agents Support and installation in

Bekijk vacature »

Senior Python Developer vacature

Jij volgt ontwikkelingen op de voet. Sterker nog: je bent er onderdeel van. Jij loopt voorop. Jij denkt met klanten mee en helpt hen innoveren. Zo kun jij een bijdrage leveren aan de Rabobank-app, de beveiliging van treinen voor Pro-rail verbeteren of de website van ING een boost geven. Vergaderen? Liever gewoon zorgen dat het werkt! Hoe omschrijft men een Sogetist? Gedreven, resultaatgericht en niet snel tevreden. Wat niet wil zeggen dat je nooit met hem of haar kunt lachen. Integendeel. Plezier hoort wat ons betreft net zo goed bij werken. Maar we gaan op de eerste plaats voor de

Bekijk vacature »

Senior Front-end Developer

Senior Front-end Developer bij Capgemini Bij Capgemini bouwen we niet zomaar webapplicaties en mobiele apps waar onze opdrachtgevers en hun klanten mee overweg kunnen. Nee, we ontwikkelen applicaties voor miljoenen gebruikers en dan ook nog apps waar men écht gelukkig van wordt. Van de medewerkers in de organisatie zelf tot aan de eindgebruikers. En als Senior Front-end Developer ben jij hierbij onmisbaar! De rol Van het bouwen van nieuwe functionaliteiten, het behouden, bewaken en verbeteren van de huidige infrastructuur en applicaties tot aan het ontwikkelen van nieuwe innovaties. Als Front-end Developer ben je de lead developer binnen jouw scrumteam en

Bekijk vacature »

Back-end PHP Developer / Maatschappelijk betrokken

Functieomschrijving Ben jij een developer die de volgende stap in zijn carrière wilt maken? Wijk jij niet uit voor precisie werk in een open en informele omgeving? Lees dan snel verder en reageer! Her- en uitbouwen van het inhouse softwareplatform dmv PHP; Onderhouden van bovengenoemd platform in PHP; Sparren met het team; Meedenken over nieuwe functionaliteiten, security etc; Jouw input leveren aan het proces door op de hoogte te blijven van nieuwe ontwikkelingen etc. Functie-eisen Afgeronde HBO of WO opleiding, liefst in de richting van Informatica; Je hebt minimaal 3 jaar ervaring als PHP Developer; Je hebt ervaring met object

Bekijk vacature »

Programmeur

NFGD zoekt per direct een Programmeur, ter versterking van ons team! Als Programmeur bij de NFGD heb je een uitdagende functie. Je bent werkzaam op de divisie Verkoop. De NFGD werkt voor veel verschillende opdrachtgevers. Dit varieert van grote corporates, instituties, diverse ministeries, MKB, omroepen en producenten tot verschillende (grote) evenementen. De NFGD kenmerkt zich als een informele organisatie met een open cultuur. Waar gewerkt wordt met passie voor het AV vak en mogelijkheden om zelf te ontwikkelen en te leren. De vacature is ontstaan ter versterking van ons team. In ons team word je dagelijks uitgedaagd in diverse soorten

Bekijk vacature »

C# developer, technische omgeving, Westland

Ben je een ervaren C# developer en op zoek naar een technische omgeving? Een baan met afwisseling waarbij je niet alleen achter je scherm bezig bent met code kloppen? Binnen een bedrijf met korte lijnen en een informele sfeer? Voor een bedrijf in het Westland zijn we op zoek naar een technische software ontwikkelaar. Het bedrijf richt zich op technische maatwerk systemen voor in de tuinbouw. Denk hierbij aan de ontwikkeling van besturingssoftware en beeldherkenningssoftware ter aansturing van robotica. Het werk omvat veel afwisseling; niet alleen programmeren, maar ook het ontwerp en het in bedrijf stellen bij klanten. Het gaat

Bekijk vacature »

Cloud Developer

I am working with a company that focuses on utilizing all development and maintenance aspects of the public cloud optimally so that the cloud does all the heavy lifting needed. By leveraging innovative cloud services, building cloud-native applications and creating a culture of experimentation, they help organizations to become more agile. Their developers and engineers grow towards one common goal, to truly operate DevOps in the cloud. Applying traditional ways of working in the cloud won’t work because the cloud is fundamentally different. A dynamic and rapidly changing ecosystem of managed services has created a paradigm shift. Companies have to

Bekijk vacature »

Sharepoint Developer - zeer goede voorwaarden!

Functieomschrijving Als Sharepoint specialist kom je terecht in een functie met veel vrijheid. Jij bent straks het aanspreekpunt binnen de organisatie als het gaat om Sharepoint. Op het Sharepoint-platform zijn meerdere interne applicaties gebouwd, dus je komt aan verschillende projecten te werken. Iedere ochtend bepaal jij voor jezelf (of indien nodig in overleg met collega's) welke problemen/taken prioriteit 1 zijn, zodat je daar als eerste mee aan de slag kan gaan. Vervolgens werk je een lijst af, zodat alle taken aan bod komen. Natuurlijk komen hier af en toe spoedopdrachten tussendoor, dus je moet gestructureerd en onder druk kunnen werken.

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

14/11/2019 17:33:07
 
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.