Ik ben bezig met een functie in PHP die afbeeldingen verkleint naar bepaalde dimensies. De bedoeling is dat ik een specifieke width / height combinatie opgeef en dan de afbeelding daarnaar verkleint. Als het nodig is wordt er ook en stuk vanaf geknipt zodat de thumbnail ook echt de dimensies krijgt die ik opgeef.
Echter, als er een afbeelding wordt toegevoegd die aan één of beide kant(en) kleiner is dan de thumbnail width / height, dan moet de rest van de ruimte opgevuld worden met een transparante laag.
Dat laatste gaat helaas fout. Ik test momenteel met een portret afbeelding. Mijn thumbnail dimensies zijn 100px bij 100px. De afbeelding zelf is 50px bij 100px (de width is dus kleiner dan de thumbnail width, aan beide kanten moet dus een transparante strook komen).
De code die ik nu heb zorgt er echter voor dat ik links wel een transparante laag krijg, maar rechts een zwarte (default) laag. Ik krijg het maar niet voor elkaar om dit ook transparant te maken. Hier houdt mijn php kennis echt op. De code die ik nu gebruik is als volgt:
Echter, als er een afbeelding wordt toegevoegd die aan één of beide kant(en) kleiner is dan de thumbnail width / height, dan moet de rest van de ruimte opgevuld worden met een transparante laag.
Dat laatste gaat helaas fout. Ik test momenteel met een portret afbeelding. Mijn thumbnail dimensies zijn 100px bij 100px. De afbeelding zelf is 50px bij 100px (de width is dus kleiner dan de thumbnail width, aan beide kanten moet dus een transparante strook komen).
De code die ik nu heb zorgt er echter voor dat ik links wel een transparante laag krijg, maar rechts een zwarte (default) laag. Ik krijg het maar niet voor elkaar om dit ook transparant te maken. Hier houdt mijn php kennis echt op. De code die ik nu gebruik is als volgt:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| // Test afbeelding is JPG $imgOriginal = @imagecreatefromjpeg( $source_image ); // Crop image to specified dimensions. Fill empty gap with transparancy $newImage = imagecreatetruecolor($newWidth, $newHeight); imagesavealpha($newImage, true); $cropStartX = ( $srcWidth / 2) - ( $newWidth / 2 ); $cropStartY = ( $srcHeight / 2) - ( $newHeight / 2 ); // Create the thumbnail iimagecopyresampled($newImage, $imgOriginal, 0, 0, $cropStartX, $cropStartY, $newWidth, $newHeight, $newWidth, $newHeight); // Add transparant layer $transparancy = imagecolorallocatealpha($newImage, 0, 0, 0, 127); imagefill($newImage, 0, 0, $transparancy); // Finally save image als PNG (for the transparancy layer) imagepng($newImage, $destination_filename, 0); |
AMD Phenom II X6 1090T | 2x 4GB Kingston | Geforce GTX 560TI | Creative I-Trigue L3450