De situatie
Ik probeer een uitsnede te maken van een grotere foto (croppen). Om deze uitsnede moet echter nog een rand van 2CM geplakt worden (oftewel aantalcentimeters+(2x2cm) voor de breedte en hetzelfde voor de hoogte). Als je uitsnede echter tegen de rand van de foto aanzit moet er dus een rand bijgeplakt worden van buiten de foto.
Het probleem
Het probleem is dus dat imagecreatetruecolor() een zwarte afbeelding aanmaakt, waarover ik het geselecteerde/gecropte gedeelte plak. Wanneer er echter een rand buiten de foto zit zie je hier de zwarte kleur van imagecreatetruecolor() als achtergrond. Dit moet dus wit zijn.
Wat ik heb geprobeerd
Ik kom er alleen niet uit hoe ik dit fix. Ik heb nu (heel sterk versimpeld) dit:
Het resultaat
Ik zou verwachten dat het zwarte gebied wordt overschreven door een witte kleur, zodat je een witte rand om afbeeldingen heen ziet. Dit is echter niet het geval. De rand om afbeeldingen heen blijft zwart zoals te zien is op onderstaande foto:

Iemand enig idee waarom dit zo is
Ik probeer een uitsnede te maken van een grotere foto (croppen). Om deze uitsnede moet echter nog een rand van 2CM geplakt worden (oftewel aantalcentimeters+(2x2cm) voor de breedte en hetzelfde voor de hoogte). Als je uitsnede echter tegen de rand van de foto aanzit moet er dus een rand bijgeplakt worden van buiten de foto.
Het probleem
Het probleem is dus dat imagecreatetruecolor() een zwarte afbeelding aanmaakt, waarover ik het geselecteerde/gecropte gedeelte plak. Wanneer er echter een rand buiten de foto zit zie je hier de zwarte kleur van imagecreatetruecolor() als achtergrond. Dit moet dus wit zijn.
Wat ik heb geprobeerd
Ik kom er alleen niet uit hoe ik dit fix. Ik heb nu (heel sterk versimpeld) dit:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| /** * $cmw = aantal pixels per centimeter breedte * $cmh = aantal pixels per centimeter hoogte **/ // Lege afbeelding aanmaken (die zwart is) op het juiste formaat $src = imagecreatefromjpeg(getcwd() . '/uploads' . $img); $dest = imagecreatetruecolor($imgwidth + (4 * $cmw), $imgheight + (4 * $cmh)); // Witte kleur aanmaken en de destination afbeelding daarmee vullen (zwart wordt dus wit) $white = imagecolorallocate($dest, 255, 255, 255); imagefill($dest, 0, 0, $white); // Uitsnede kopiëren naar lege afbeelding en hier een afbeelding van opslaan op de server imagecopy($dest, $src, 0, 0, $x1 - (2 * $cmw), $y1 - (2 * $cmh), $imgwidth + (4 * $cmw), $imgheight + (4 * $cmh)); imagejpeg($dest, $newname, 100); |
Het resultaat
Ik zou verwachten dat het zwarte gebied wordt overschreven door een witte kleur, zodat je een witte rand om afbeeldingen heen ziet. Dit is echter niet het geval. De rand om afbeeldingen heen blijft zwart zoals te zien is op onderstaande foto:

Iemand enig idee waarom dit zo is