Avatar billede seekasr Nybegynder
01. marts 2004 - 16:24 Der er 6 kommentarer og
1 løsning

Resize .png uden at gøre transparent bg sort

Hello

Når jeg ændrer størrelsen på et .png-billede med transparent baggrund, bliver det transparante til sort. Det skyldes at imagecreatefromtruecolor() laver et sort billede, og når det transparente (resizede) billede efterfølgende bliver kopieret oveni, er det klart at der bliver sort baggrund.

Jeg har fået nedenstående metode anbefalet. Den forsøger at overskrive det sorte med transparent farve inden man flytter det nye billede derover. Men det virker ikke - i hvert fald ikke i min GD-lib version (2.0.20-1)

Men der må da være en metode til at bevare den transparente baggrund? Hvordan resizer man et transparent .png-billede, uden at gøre baggrunden sort?

På forhånd tak
seekasr

----------------------------------

Eksempel:
Før GD-lib: http://www.rareye.com/sites/aho/img/ul/21.png
Efter GD-lib: http://www.rareye.com/sites/aho/img/img.php?id=21

Kode:
<?php
$image = imagecreatefrompng(foo);

//Højde og bredde
$iw = 80;
$ih = ($iw*(imagesy($image)/imagesx($image)))+1;

//Det sorte billede
$image_new = imagecreatetruecolor($iw,$ih);

//Forsøg på at erstatte sort med transparent - virker ikke
$transp = magecolortransparent($image);
imagecolortransparent($image_new, $transp);
imagefilledrectangle($image_new,0,0,$iw,$ih,$transp);

//Resample
imagecopyresampled($image_new,$image,0,0,0,0,$iw,$ih,imagesx($image),imagesy($image));

//Output image
header("Content-type: image/png");
imagepng($image_new);
?>
Avatar billede detox Nybegynder
01. marts 2004 - 16:29 #1
Er det en slåfejl?:
$transp = magecolortransparent($image);
$transp = imagecolortransparent($image);
Avatar billede seekasr Nybegynder
01. marts 2004 - 16:40 #2
Ja - tak skal du ha :)
Avatar billede detox Nybegynder
01. marts 2004 - 16:44 #3
Prøv:

$image = imagecreatefrompng($foo);

//Højde og bredde
$iw = 80;
$ih = ($iw*(imagesy($image)/imagesx($image)))+1;

$image_new = imagecreatetruecolor($iw,$ih);
imagetruecolortopalette($image_new,1,256);

$transp = imagecolortransparent($image);
imagecolortransparent($image_new, $transp);

//Resample
imagecopyresampled($image_new,$image,0,0,0,0,$iw,$ih,imagesx($image),imagesy($image));

//Output image
header("Content-type: image/png");
imagepng($image_new);
Avatar billede seekasr Nybegynder
01. marts 2004 - 17:57 #4
Ohh yeah - det virker sgu :)

Smid et svar.
Avatar billede detox Nybegynder
01. marts 2004 - 17:59 #5
Jeps
Avatar billede seekasr Nybegynder
01. marts 2004 - 18:07 #6
Tak for hjælpen :)
Avatar billede detox Nybegynder
01. marts 2004 - 18:10 #7
Velbekommen :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester