[GDlib] resizen zonder uitrekken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

.NET Developer

Functieomschrijving Ben jij klaar voor de volgende stap in jouw carrière? Kom werken bij dit kleine softwarebureau en werk aan de gaafste maatwerk projecten. Je komt te werken in een klein development team en werk nauw samen met elkaar, om maatwerk software te leveren en bij te dragen aan bedrijfsautomatiseringen. Je gaat werken met de Microsoft stack en technieken als .NET, C#, Entity, MVC, SQL server. In de functie krijg je veel vrijheid om zelf beslissingen te nemen en je hebt impact op de bedrijfsprocessen. Bedrijfsprofiel Dit familiebedrijf bestaat al ruim 20 jaar. Zij hebben een vast netwerk van klanten,

Bekijk vacature »

Traineeship Front-end developer (WO, 0 tot 3 jaar

Functie Zoals beschreven ga je vanaf start aan de slag bij een passende opdrachtgever, hierbij kijken ze echt naar jouw wensen, kennis/ervaring maar ook de reisafstand. Momenteel hebben ze meerdere klanten waarbij ze groepen hebben opgezet wat maakt dat er diverse uitdagende kansen liggen. Naast het werken bij de opdrachtgever, en het volgen van de masterclasses, zul je regelmatig met de andere trainees in contact zijn. Niet alleen op professioneel vlak maar juist ook bij de borrels en kwartaaluitjes! Kortom; een jaar lang hard aan jezelf werken in combinatie met gezelligheid en plezier. Spreek dit jou aan? Dan komen we

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 »

Back-end Developer C#

Functie omschrijving We are looking for a dutch native speaker Ben jij een ervaren back-end developer, die graag in een in-house functie wil werken? Passen de woorden innovatie, programmeren en teamspeler bij jou? Zoek niet verder en lees snel verder. Voor een echt familiebedrijf in de regio van Uden ben ik op zoek naar een back-end developer, die met name kennis heeft van C# en .NET. Jij gaat de interne applicaties verder optimaliseren en nieuwe features ontwikkelen. Verder ga je de volgende werkzaamheden uitvoeren: Ondersteunen gebruikers; Uitvoeren van analyses van de software/applicaties; Maken van functionele ontwerpen en deze door vertalen

Bekijk vacature »

Team Lead Java Developer

Functie Wat ga je doen als Java developer? Als Team Lead Java Developer draag een grote verantwoordelijk je stuurt ontwikkelaars aan en staat dagelijks in contact met jou ICT Manager. De team Bestaat uit front-end en backend systemen. Je ben in staat op hoog niveau de technische vak te bepalen en ook te bewaren. Je dag zie er als volgt uit, ontwikkelen van nieuwe en bestaande applicaties, het uitvoeren van processen en analyses en het beschrijven van functioneel ontwerpen. Ook zal samen met jouw Tester applicaties gaan testen door middel van peer reviews en het leveren van support aan gebruikers

Bekijk vacature »

SQL Developer

Functie omschrijving Altijd al willen werken bij een snelgroeiend bedrijf, actief in de logistieke sector? Dit is je kans! Ik ben op zoek naar een ervaren SQL Developer in de omgeving Tilburg. Dit bedrijf is gespecialiseerd in in de ontwikkeling van software en maatwerk oplossingen voor het automatiseren van logistieke processen. Klanten zijn o.a. BOL en andere grote distributiecentrums. Jouw taken worden vooral: Verantwoordelijk voor ontwikkelen van stored procedures, voor snelle afhandeling van data; Optimalisatie van de SQL query's en T-SQL query's; Jij gaat je bezig houden met ontwerpen, ontwikkelen en optimaliseren van de MS SQL Databases; In deze functie

Bekijk vacature »

Delphi developer

Functie Als Delphi developer ga jij aan de slag in een team met twee andere ervaren Delphi programmeurs waaronder de Hoofd programmeur. Als team zijn jullie verantwoordelijk voor de doorontwikkeling van jullie bestaande applicatie. Daarnaast zijn jullie verantwoordelijk voor het onderhouden van deze applicatie en het oplossen van eventuele bugs. Eisen - HBO werk en denk niveau; - Minimaal één jaar ervaring met Delphi; - Goede beheersing van de Nederlandse taal in woord en geschrift; - Jij bent zelfstandig, maar kan ook in team verband werken. Aanbod - €3000,-- €4000,- op basis van jouw kennis en ervaring; - 8% vakantiegeld;

Bekijk vacature »

Software developer (PHP) - Utrecht centrum

Functie Ieder onderdeel van de software draait op aparte servers en het bestaat dus echt uit verschillende componenten. Het team bestaat uit 4 developers, een klein team dus met korte lijnen. Alles in intern ontwikkeld en je werkt aan alle facetten. Van uitbreiding van de core tot maatwerk voor de klant. Ook liggen er verschillende uitdagingen op servervlak en databases. Je zult de eerste periode veel samenwerken met de lead developer om vervolgens echt je gang te gaan binnen de software. In het team streven ze naast de hoogst haalbare kwaliteit. Hiervoor werken ze nauw met elkaar samen en levert

Bekijk vacature »

Robot Programmeur

In het kort Drie redenen waarom deze vacature uniek is! Modern, innovatief en Informeel bedrijf waar veel mogelijk is Werken met diverse robot merken Meehelpen met inbedrijfstellingen bij de klant De organisatie Hier ga je aan de slag Dit groeiende bedrijf van totaaloplossingen in de automatisering van productieprocessen, is hoofdzakelijk actief in de Benelux. Vanuit het kantoor in regio Amersfoort worden veel oplossingen geboden in de vorm van robotica. Geen project is hetzelfde wat garant staat voor bijzonder veel afwisseling. De bedrijfsgrootte is ongeveer 80 man. Van gerobotiseerde machinebeladingen tot aan assemblage automatiseringen wordt vanuit krachtige engineering maatwerk equipment geleverd.

Bekijk vacature »

Low Code Ontwikkelaar

In het kort Als Low Code Developer werk je aan projecten bij en voor onze klanten, waarbij je voor het ontwikkelen van de oplossingen een technisch low-code platform gebruikt. Samen met het team streef je naar de beste oplossing en bepalen jullie de juiste aanpak. Je rol is divers en je bent van begin tot eind betrokken bij de ontwikkeling zowel de back-end en de front-end van de applicatie. Naast de ontwikkeling en oplevering, breng je ook advies uit aan de klant waarom bepaalde keuzes worden gemaakt. Je bent dan ook communicatief sterk en kunt je keuzes goed (inhoudelijk) onderbouwen.

Bekijk vacature »

C#.NET developer

Functieomschrijving Wij zijn op zoek naar een gepassioneerde Full Stack C#.NET Software Developer. Als Software Developer ben je verantwoordelijk voor het ontwikkelen van webapplicaties, apps en dashboards voor de eigen IOT-oplossingen. Je werkt samen met andere ontwikkelaars en engineers om de sensoren in machines uit te lezen en deze data om te zetten in management informatie voor jullie klanten. Taken en verantwoordelijkheden: Testen en valideren van de ontwikkelde software. Ontwikkelen en onderhouden van webapplicaties, apps en dashboards voor de eigen IOT-oplossingen. Je gaat aan de slag met diverse technologieën en frameworks. Denk hierbij aan C#, JS frameworks, HTML, CSS, TypeScript,

Bekijk vacature »

Front-end developer gezocht

Functie Je komt in een team met ambitieuze developers die de passie voor Front-End met jou delen. Samen ga je aan de slag met leuke en leerzame opdrachten. Het team heeft een eigen budget en financiën en zij bepalen zelf hoe dat besteed en investeert wordt. Je gebruikt tools als JavaScript, Node.js, React, Angular, Typescript en Vue.js wanneer je werkt aan de opdrachten. Daarnaast zul je veel leren van je collega’s en gezamenlijk een leuke tijd doorbrengen tijdens activiteiten zoals wintersport, hackatons en conferentiebezoeken. Je krijgt niet alleen de mogelijkheid Front-End te ontwikkelen, maar ook vooral jezelf. Dit kan behaald

Bekijk vacature »

Traineeship Fullstack developer (WO, 0 tot 3 jaar

Functie Zoals beschreven ga je vanaf start aan de slag bij een passende opdrachtgever, hierbij kijken ze echt naar jouw wensen, kennis/ervaring maar ook de reisafstand. Momenteel hebben ze meerdere klanten waarbij ze groepen hebben opgezet wat maakt dat er diverse uitdagende kansen liggen. Naast het werken bij de opdrachtgever, en het volgen van de masterclasses, zul je regelmatig met de andere trainees in contact zijn. Niet alleen op professioneel vlak maar juist ook bij de borrels en kwartaaluitjes! Kortom; een jaar lang hard aan jezelf werken in combinatie met gezelligheid en plezier. Spreek dit jou aan? Dan komen we

Bekijk vacature »

Full-stack Developer

As a Full-stack developer at KUBUS, you will develop the (web)applications and services of BIMcollab. You will work on both the front- and back-end. As a software company, KUBUS is in a unique position. We build our own products that are used by tens of thousands of users worldwide. Our company is just the right size: big enough to make a real impact in the market, but small enough that as an individual developer you can have an impact and really make a difference. Our development team consists of over 40 developers, testers, scrum masters and product owners, divided over

Bekijk vacature »

Senior Front-End Developer

Als Senior Front-End Developer bij Coolblue verbeter je de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Wat doe je als Senior Front-End Developer bij Coolblue? Als Senior Front-end Developer werk je aan de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Je vindt het leuk om samen te werken met de UX designer om stories op te pakken. Daarnaast ben je trots op je werk en verwelkomt alle feedback. Ook Senior Front-end Developer worden bij Coolblue? Lees hieronder of het bij je past. Dit vind je leuk om te doen Verbeteren van de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Nadenken

Bekijk vacature »
Daan Onbekend

Daan Onbekend

13/11/2009 23:00:00
Quote Anchor link
Hallo,

Ik ben op zoek naar een manier waarmee ik een afbeelding kan resizen waarbij hij de grootte van een vooraf ingesteld kader aanneemt.

Wat is hier een slimme manier voor?

Ik gebruik nu een manier waarbij hij hem eerst binnen een vierkant krijgt, en later knipt hij dan alsnog de randjes eraf. Maar dit werkt slecht als de afbeelding al de goede verhoudingen heeft, dan worden er namelijk onnodig randen afgeknipt.
 
PHP hulp

PHP hulp

18/12/2024 03:00:14
 
Emmanuel Delay

Emmanuel Delay

14/11/2009 13:16:00
Quote Anchor link
Indien de files op jouw server staan, kan je met getimagesize werken. Indien de images elders staan, lukt dit meestal niet.

bv.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$afb
= "img/flag.jpg";  // elkel relatief pad gegruiken, geen http:// ...
list($width, $height, $type, $attr) = getimagesize($afb);  
?>


En dan is het gewoon een kwestie van rekenen.
Hoe groot is je kader?
 
Igor

Igor

14/11/2009 16:27:00
Quote Anchor link
Hier heb je een stukje code wat ik gebruik om van een geuploade afbeelding een thumbnail te maken (in de juiste verhoudingen):

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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php
if (strtolower($extensie) == "jpg" || strtolower($extensie) == "jpeg" || strtolower($extensie) == "png" || strtolower($extensie) == "gif")
    {

        $afbeelding = $_FILES[$upload_name]['tmp_name'];
                
        // Afbeelding verkleinen
        
            // Set a maximum height and width

            $width = 80;
            $height = 48;
            
            // Get new dimensions
            list($width_orig, $height_orig) = getimagesize($afbeelding);
            
            $ratio_orig = 1;
            
            if($width_orig >= $height_orig)
            {

                $percent = $width / $width_orig;
                $width_new = round($width_orig * $percent);
                $height_new = round($height_orig * $percent);
                
                if($height_new > $height)
                {

                    $percent = $height / $height_new;
                    $width_new = round($width_new * $percent);
                    $height_new = round($height_new * $percent);
                }
            }

            else
            {
                $percent = $height / $height_orig;
                $width_new = round($width_orig * $percent);
                $height_new = round($height_orig * $percent);
                
                if($width_new > $width)
                {

                    $percent = $width / $width_new;
                    $width_new = round($width_new * $percent);
                    $height_new = round($height_new * $percent);
                }
            }

            
        // Resample
        $image_p = imagecreatetruecolor($width_new, $height_new);
        if (strtolower($extensie) == "jpg" || strtolower($extensie) == "jpeg")
        {

            $image = imagecreatefromjpeg($afbeelding);
        }

        elseif (strtolower($extensie) == "png")
        {

            $image = imagecreatefrompng($afbeelding);
        }

        elseif (strtolower($extensie) == "gif")
        {

            $image = imagecreatefromgif($afbeelding);
        }

        imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width_new, $height_new, $width_orig, $height_orig);
        
        // Output
        imagepng($image_p, "thumbs/naampje.png");
    }

?>


Je moet hierbij wel in de $extensie aangeven welke type afbeelding het is.

Hopelijk kom je hiermee een beetje uit de voeten.
 
Emmanuel Delay

Emmanuel Delay

14/11/2009 16:51:00
Quote Anchor link
Ja, that's it.

Eventueel vorm je dat vlug om tot een functie, met als parameters ($img, $maxWidth, $mahHeight).
 
Daan Onbekend

Daan Onbekend

14/11/2009 20:27:00
Quote Anchor link
@igor

Dat script is niet wat ik zoek,

Ik wil namelijk een afbeelding verkleinen, maar dan moet het resultaat uitgesneden worden tot een vooraf ingestelde verhouding.

Ik gebruikt voor een andere website dit script:
http://phphulp.nl/forum/showtopic.php?cat=1&id=66438
(zie laatste reactie)

Maar dat werkt alleen als het resultaat vierkant moet zijn, maar ik wil het resultaat dus 200 x 320 hebben.
 
Emmanuel Delay

Emmanuel Delay

15/11/2009 12:45:00
Quote Anchor link
Die 200 x 300 pixel moeten volledig gevuld zijn en eventueel moet er een stuk worden afgesneden, juist?
 
Daan Onbekend

Daan Onbekend

15/11/2009 13:14:00
Quote Anchor link
Dat klopt, ik heb nu iets dat werkt.

Maar dat doe ik op de volgende manier:

Ik heb een willekeurige afbeelding.
Die resize ik zo, dat de kortste kant 320 pixels is, en dat de verhoudingen gelijk blijven.

Dan snij ik de randen eraf zodat ik een vierkant van 320x320 overhoud.

En daar snij ik dan 200x320 uit.

Het probleem hiervan is merkbaar als de afbeelding al de goede verhouding heeft.

Dus bijvoorbeeld een afbeelding van 2000x3200, wordt dan eerst vierkant gemaakt om hem vervolgens weer 200x320 te maken.

Hiermee verlies je onnodig een rand.
 
Emmanuel Delay

Emmanuel Delay

15/11/2009 13:19:00
Quote Anchor link
Ben je hier iets mee?

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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?php
$afb
= "images/1.jpg";  // elkel relatief pad gegruiken, geen http:// ...
echo '<pre>'. $width.' '.$height.' '.$type.' '.$attr .'</pre>';
$kaderWidth = 300;
$kaderHeight = 200;

$attr1 = imageAttrInKader($afb, $kaderWidth, $kaderHeight, 'vullen');
$attr2 = imageAttrInKader($afb, $kaderWidth, $kaderHeight, 'volledig');

echo '<html>
  <head>
    <style>
      .kader{width: '
. $kaderWidth .'px; height: '. $kaderHeight .'px; border: 1px solid #000000; margin: 3px;}
    </style>
  </head>
  <body>
    <div class="kader"><img '
. $attr1 .' src="'. $afb .'"/></div>
    <div class="kader"><img '
. $attr2 .' src="'. $afb .'"/></div>
  </body>
</html>'
;

function
imageAttrInKader($src, $kaderWidth, $kaderHeight, $option)
{

  try
  {
    list($width, $height, $type, $attr) = getimagesize($src);  
    $hellingImage = $height / $width;
    $hellingKader = $kaderHeight / $kaderWidth;
    switch ($option)
      {
        case
'vullen':   // het kader wordt volledig gevuld met de image.  Eventueel wordt een deel van de image uitgesneden
          if ($hellingImage > $hellingKader)
            {

              return ' width="'. $kaderWidth .'" ';
            }

          else
            {
              return ' height="'. $kaderHeight .'" ';
            }

          break;
        case
'volledig': // De image wordt volledig getoond, eventueel blijft een deel van het kader blanco
          if ($hellingImage < $hellingKader)
            {

              return ' width="'. $kaderWidth .'" ';
            }

          else
            {
              return ' height="'. $kaderHeight .'" ';
            }

          break;
      }
  }

  catch(Exception $e)
  {

    return null;
  }
}

?>


Edit: je kan ook best dit toevoegen aan de css van kader:
text-align: center; overflow: hidden;
Gewijzigd op 01/01/1970 01:00:00 door Emmanuel Delay
 
Jan Koehoorn

Jan Koehoorn

15/11/2009 13:46:00
Quote Anchor link
Daan Middendorp schreef op 15.11.2009 13:14:
Het probleem hiervan is merkbaar als de afbeelding al de goede verhouding heeft.

Dus bijvoorbeeld een afbeelding van 2000x3200, wordt dan eerst vierkant gemaakt om hem vervolgens weer 200x320 te maken.

Hiermee verlies je onnodig een rand.

Dan check je toch eerst met getimagesize wat de verhouding w x h is? Is die 1.6, dan hoef je alleen maar te resizen en niet te croppen.
 
Daan Onbekend

Daan Onbekend

15/11/2009 14:06:00
Quote Anchor link
Daar heb ik al aan zitten denken, maar als de verhouding dan 1.5 is, dan heb je nog steeds het zelfde probleem alleen in kleinere mate.
 
Emmanuel Delay

Emmanuel Delay

15/11/2009 15:30:00
Quote Anchor link
Toon eens wat je nu zelf hebt en waar je denkt dat er problemen zijn.
 
Jan Koehoorn

Jan Koehoorn

15/11/2009 18:10:00
Quote Anchor link
Ik heb even iets gemaakt. Het is een begin en er moeten nog veel meer checks op, maar het werkt. Voor een online voorbeeld, zie:

Jan Koehoorn: image upload met crop en resize

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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?php
    /****
    *    crop image naar 200 * 320
    *    dat betekent een ratio w * h van 0.625
    */

    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        if ($_FILES['userfile']['error'] == 0) {
            list ($src_w, $src_h) = getimagesize ($_FILES['userfile']['tmp_name']);
            $ratio = $src_w / $src_h;
            $img = new Imagick ($_FILES['userfile']['tmp_name']);
            if ($ratio > 0.625) {
                $img->scaleImage (0, 320);
                $img->writeImage ('phphulp_uncropped.jpg');
                $img->cropImage (200, 320, round (($img->getImageWidth () - 200) / 2), 0);
            }

            elseif ($ratio < 0.625) {
                $img->scaleImage (200, 0);    
                $img->writeImage ('phphulp_uncropped.jpg');
                $img->cropImage (200, 320, 0, round (($img->getImageHeight () - 320) / 2));
            }

            else {
                $img->scaleImage (200, 320);    
                $img->writeImage ('phphulp_uncropped.jpg');
            }

            $img->writeImage ('phphulp.jpg');
            $img->destroy ();
        }
    }

?>



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>PHPHulp voorbeelden</title>

    <link rel="stylesheet" type="text/css" media="screen" href="http://www.jankoehoorn.nl/phphulp/reset.css" />
    <link rel="stylesheet" type="text/css" media="screen" href="http://www.jankoehoorn.nl/phphulp/stylesheet.css" />
</head>

<body>
    
    <div id="container">

        <div id="header">
            <h1>Jan Koehoorn | PHPHulp voorbeelden</h1>
        </div>

        <div id="form">
            <form method="post" action="image-upload-crop-resize.php" enctype="multipart/form-data">
                <input id="userfile" name="userfile" type="file" />
                <input type="submit" value="upload" />
            </form>
        </div>    

        <div id="image">
            <p>Cropped image:</p>
            <p><img style="border: 1px solid black;" src="phphulp.jpg" /></p>
            <p>Uncropped image:</p>
            <p><img style="border: 1px solid black;" src="phphulp_uncropped.jpg" /></p>

        </div>
    </div>
</body>
</html>
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
 
Daan Onbekend

Daan Onbekend

15/11/2009 20:34:00
Quote Anchor link
@Jan,

Dit is precies wat ik zocht, geweldig!
 
Jan Koehoorn

Jan Koehoorn

15/11/2009 21:35:00
Quote Anchor link
Mooi zo, en graag gedaan ;-)
 



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.