thumbnail transparante gif
als ik een thumbnail wil maken van een transparante gif, krijg ik een thumb terug met een zwarte achtergrond.
weet iemand wat ik verkeerd doe?
function thumbnail($map,$tmpnaam,$bestandsnaam,$breedte,$hoogte)
{
list($breedte_origineel, $hoogte_origineel) = getimagesize($tmpnaam);
if ($breedte && ($breedte_origineel < $hoogte_origineel)) {
$breedte = ($hoogte / $hoogte_origineel) * $breedte_origineel;
}else{
$hoogte = ($breedte / $breedte_origineel) * $hoogte_origineel;
}
$extensie = extensie($bestandsnaam);
if($extensie == 'gif') {
$afbeelding_origineel = imagecreatefromgif($tmpnaam);
} elseif($extensie == 'jpg' OR $extensie == 'jpeg') {
$afbeelding_origineel = imagecreatefromjpeg($tmpnaam);
}
$afbeelding = imagecreatetruecolor($breedte, $hoogte);
imagecopyresampled($afbeelding, $afbeelding_origineel, 0, 0, 0, 0, $breedte, $hoogte, $breedte_origineel, $hoogte_origineel);
if($extensie = 'jpg' or $extensie = 'jpeg') {
@imagejpeg($afbeelding , $map.$bestandsnaam , 75);
} elseif($extensie = 'gif') {
@imagegif($afbeelding , $map.$bestandsnaam);
}
}
je test zeker in internet explorer. in IE mag een gif maar 1 achtergrondkleur hebben om een transparant te maken dus als er meerdere transparante tinten inzitten vreet hij het niet. Een oplossing zou zijn om met PNG bestanden te werken alhoewel dat ook een drama is. Hier is wel ergens een workarround voor.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$watermark = imagecreatefrompng('watermerk.png');
imageAlphaBlending($watermark, false);
imageSaveAlpha($watermark, true);
$watermark_width = imagesx($watermark);
$watermark_height = imagesy($watermark);
$dest_x = imagesx($image) - $watermark_width - 20;
$dest_y = imagesy($image) - $watermark_height - 20;
imagecopymerge($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, $transparant);
?>
Gebruik dit script gewoon nog voor dat je in het huidige script van je de afbeelding gaat weergeven.
(Alle $image variables zijn de variables die moeten worden gewijzigd naar de variables van de te bewerken afbeelding in kwestie.)
$watermark = imagecreatefrompng('watermerk.png');
imageAlphaBlending($watermark, false);
imageSaveAlpha($watermark, true);
$watermark_width = imagesx($watermark);
$watermark_height = imagesy($watermark);
$dest_x = imagesx($image) - $watermark_width - 20;
$dest_y = imagesy($image) - $watermark_height - 20;
imagecopymerge($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, $transparant);
?>
Gebruik dit script gewoon nog voor dat je in het huidige script van je de afbeelding gaat weergeven.
(Alle $image variables zijn de variables die moeten worden gewijzigd naar de variables van de te bewerken afbeelding in kwestie.)