[GDlib] resizen zonder uitrekken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

App Developer

Samen werken aan een gezonder Nederland en toekomstbestendige zorg voor iedereen. Dat is de impact die jij kan hebben als App Developer bij VGZ. Wil jij een bijdrage leveren aan een maatschappij waarin iedereen zich thuis voelt? Bekijk dan de vacature. Uit onderzoek van Computable is VGZ verkozen tot ‘beste niet-ICT werkgever voor ICT’ers van Nederland’ Hoe ook jij het verschil maakt Als App developer werk jij aan het belangrijkste communicatiekanaal van VGZ, namelijk de App! Als App developer bij VGZ maak je onderdeel uit van een van onze App-teams. Met een goede mix van kennis en ervaring zet je

Bekijk vacature »

.Net Ontwikkelaar

Dit ga je doen Het ontwerpen en ontwikkelen van software voor klanten; Het bijdragen van kennis en ervaring; Het integreren van van de software en afstemmen met klanten; Het functioneel testen van de ontwikkelde software. Hier ga je werken Voor onze relatie zijn wij momenteel op zoek naar een .Net Developer die wilt werken aan software die draait op machines wereldwijd. De organisatie produceert software voor applicaties die gebruikt worden in verschillende branches. De software wordt geleverd aan fabrikanten van verschillende robotica en machines. Als .Net ontwikkelaar ben je intern onderdeel van het team wat de applicatie omgevingen ontwikkeld en

Bekijk vacature »

Intern - Junior PHP ontwikkelaar in fris en jong t

Bedrijfsomschrijving Werk jij graag een in fris, flexibel en jong team? Bij ons ben jij vrij om te bepalen waar jij het liefst werkt en op de vrijdag komen wij gezellig bij elkaar op kantoor. Flexibiliteit en vrijheid zijn bij ons de norm en dat geeft jou de ruimte en energie om het beste uit jezelf te halen! Ons team bestaat uit vijf enthousiaste collega's die jou graag ondersteunen in zowel je persoonlijke als professionele ontwikkeling. Met twee ervaren Senior Developers als mentoren ben jij in goede handen. Wij zien onszelf als een vriendengroep die gezamenlijk werken aan iets moois

Bekijk vacature »

Senior .NET developer

Functie As a Senior .NET developer you will work in our Research & development team. Our team consists of 17 colleagues! We are currently busy setting up a completely new architecture for a new product. We use VS2022 and .NET 6.0 for our new product. Your function is therefore mainly backend oriented. Since we develop measuring equipment for the chemical industry, it is also very important to develop high-quality software for its control. You are also responsible for designing, implementing and testing new features. For this position its also very important to ensure future-proof and sustainable architecture. Eisen - A

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 »

Junior / Medior C# .NET ontwikkelaar in Brabants t

Bedrijfsomschrijving Ben jij een gepassioneerde C# .NET ontwikkelaar met een voorliefde voor hardware? Dan is dit de perfecte kans voor jou! Bij ons bedrijf krijg je de kans om deel uit te maken van een team van sociale en enthousiaste techneuten die er elke dag naar streven om onze eigen ontwikkelde software nog beter te maken. Het team van ongeveer 10 team medewerkers maakt zich hard om de interne processen gestroomlijnd te laten verlopen. Functieomschrijving Als lid van ons hechte en behulpzame team word je betrokken bij diverse projecten. Daarbij krijg je te maken met data-analyses, content en de logistieke

Bekijk vacature »

PHP developer - Digital Agency

Functie Het team telt momenteel 20 collega’s, bestaande uit developers (front- en backend) en het operations team, waaronder ook het management en twee scrum masters vallen. Ze zijn op zoek naar een PHP developer die in staat is zelfstandig te werken. Je komt te werken in één van de drie scrumteams en gaat aan de slag met een project voor de klant. Het fijne hieraan is dat je wel afwisseling hebt qua werk, maar tegelijkertijd doorlopend werkt voor bestaande klanten. Hierdoor krijg je ook de kans om echt de diepte in te gaan en innovatieve technische oplossingen neer te zetten.

Bekijk vacature »

Developer Full Stack

Functie omschrijving Developer gezocht! Ben jij een enthousiaste developer die graag wil bijdragen aan ontwikkelingen binnen een mooie organisatie? Solliciteer dan snel. Wij zijn op zoek naar een Full Stack Developer uit de regio Nijkerk die gaat bijdragen aan het door ontwikkelen, onderhouden en optimaliseren van een SaaS applicatie. Je moet beschikken over beheersing van zowel de Nederlandse als Engelse taal aangezien je samen met de klant gaat werken. Bedrijfsprofiel Je komt te werken binnen een echt familiebedrijf dat al sinds 1925 actief is binnen de FMCG branche. Het bedrijf heeft 40 medewerkers en er heerst een platte communicatiestructuur waarbij

Bekijk vacature »

React developer Inhouse cloudplatform

Functie De functie: Als front-end developer kom je te werken naast 2 andere front-end/React developers, waaronder één senior. Een hele mooie kans dus om in korte tijd veel nieuwe kennis en ervaring op te doen. Ze hebben momenteel veel werk hierin en daarom willen ze het team graag uitbreiden. Het is van belang dat je, zeker gezien het vele thuiswerken, in ieder geval al een aantal projecten hebt gedaan in React. Taken waar je aan kunt denken zijn het ontwikkelen van client-applicaties o.b.v. HTML5, React en andere open standaarden. Ook ben je nauw betrokken bij het implementeren van designs o.b.v.

Bekijk vacature »

Senior Airport Developer ( System engineer)

De functie Nice to know (you) De nieuwe A-pier wordt de duurzaamste van Schiphol. Als deze af is ligt er 4000 vierkante meter zonnepanelen op het dak. En de toiletten? Die spoelen door met regenwater. we gaan ervoor: het creëren van de meest duurzame en hoogwaardige luchthavens ter wereld. een toekomstbestendig en duurzaam Schiphol. Daar werken we elke dag hard aan in team Development & Sustainability. Jij bent regisseur, expert én aanjager van de ontwikkeling van Schiphol. Connecting your world Hoe maak je de ambities en doelstellingen van Schiphol concreet in een project? De waarde voor Schiphol naar eisen die

Bekijk vacature »

Traineeship Full Stack Java developer

Dit ga je doen Start jij op 7 augustus bij de Experis Academy dan kickstart jij jouw IT-carrière! We leiden je op tot een gewilde Full Stack Java Developer met alle kennis en vaardigheden die nodig zijn om de arbeidsmarkt te betreden. Wat kun je verwachten, hoe zit een dag in het leven van een Trainee eruit? Periode 1 Als Full Stack Java Developer Trainee volg je vanuit huis een op maat gemaakte onlinetraining die in het Engels wordt gegeven. De tijd die je kwijt bent aan het volgen van de training kun je vergelijken met een fulltime werkweek. In

Bekijk vacature »

PHP Developer (junior functie)

Functie omschrijving Ben jij een starter en wil je werken bij een jong en leuk bedrijf? Lees dan verder! Wij zijn op zoek naar een PHP Developer binnen een junior functie. Binnen dit bedrijf gaat het om persoonlijke aandacht en ontwikkeling! Je komt te werken voor een leuk communicatiebureau die alles op het gebied van online en offline communicatie doet. Dit doen zij voor verschillende branches, waardoor je aan diverse soorten projecten mag werken, dit maakt deze baan erg leuk! Daarbij werk je aan een door hun zelf ontwikkeld framework welke goed leesbaar is. Je maakt voor bedrijven op maat

Bekijk vacature »

.NET Developer

Functie omschrijving Ben jij een senior .NET developer en heb jij tevens ervaring als teamlead? Ben jij iemand met een helikopterview en denk jij graag mee met de klanten? Dan zijn wij op zoek naar jou! Voor een geweldig bedrijf zijn wij namelijk op zoek naar een ervaren .NET developer. Het bedrijf houdt zich bezig met het ontwerpen en bouwen van websites, portalen en applicaties voor met name zorg- en onderwijsinstellingen en overheidsinstanties. Jouw taken: Het fungeren als Lead Developer; Het meedenken met de business (dit vergt commercieel inzicht); Het begeleiden van diverse projecten (van klein tot groot); Het ontwerpen

Bekijk vacature »

Junior Software Developer C# Verhuursector Verhuur

Samengevat: Wij ontwikkelen en leveren softwaresystemen voor de logistieke sector en de verhuursector. Ben jij geschikt als Junior Software Developer? Heb je ervaring met Delphi? Vaste baan: C# Software Developer Logistiek HBO €2.500 - €3.900 Deze werkgever is een software ontwikkelaar, gericht op software voor de logistieke sector. Deze werkgever heeft eigen producten ontwikkelen en leveren ook maatwerk. Ons bedrijf kent een boeiende en inspirerende werkomgeving met een open cultuur en mogelijkheden voor je verdere ontwikkeling. Bij bij hun werk je aan onze eigen bedrijfsapplicaties. Je ontwikkelt met ons de meest nieuwe software. Wij blinken uit als het gaat om

Bekijk vacature »

Belastingdienst - Freelance Senior Cobol Applicati

Startdatum: 01.06.2023 Richttarief: €65,00 - €75,00 Duur van de opdracht: 7 maanden Uren per week: 36 Taal: Nederlands vereist! Gelieve in het Nederlands te solliciteren. Functieomschrijving: In de applicatie ETM zijn nu de inningsvoorzieningen voor ongeveer 25 aangifte- en aanslagmiddelen opgenomen. ETM is een extern aangeschafte service en het huidige contract met leverancier Oracle loopt af op 31-12-2022. Het programma uitfaseren ETM heeft als doel om vervanging te realiseren waarmee alle nu in gebruik zijnde ETM ondersteuning wordt overgenomen in nieuwe Inningsvoorzieningen om de continuïteit van de inningsprocessen te waarborgen. Eén van de inningsvoorzieningen die voor het einde van 31-12-2022

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

25/04/2024 12:55:11
 
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.