Fjerne alle grønne pixels i et billede

Her kan du få hjælp og stille spørgsmål til PHP!
Besvar
ClubAce
Begynder
Indlæg:3
Tilmeldt:2. mar 2012, 00:29
Fjerne alle grønne pixels i et billede

Indlæg af ClubAce » 25. mar 2012, 12:49

Hejsa,

Jeg har et PNG-billede med en grøn "baggrund" (RGB = 0,255,0), som skal gøres gennemsigtig.

Dette er billedet:
Billede

Detter er koden jeg lige nu har til, at gøre én specifik RGB-farve gennemsigtig:

Kode: Vælg alt

<?php
   // Create image from source
   $im = imagecreatefrompng('hotdog.png');

   // If you exactly know the RGB color indexes
   $rgb = imagecolorclosest($im, 0, 255, 0);

   //Make the chosen RGB color transparent
   imagecolortransparent($im, $rgb);

   // Output the image to the browser
   header('Content-type: image/png');

   // Display the image directly
   imagepng($im);

   imagedestroy($im);
?>
Dette er resultatet af ovestående kode.

Som det kan ses, er det desværre ikke alle de grønne pixels, som har den præcise RGB-farve, som resten af baggrunden og derfor ikke bliver gennemsigtige.

Er der nogen som kan hjælpe mig med at modificere scriptet sådan så at alle grønne pixels bliver gjort gennemsigtige?

Vh Ace

Brugeravatar
ThomasI
Grundlægger
Grundlægger
Indlæg:1528
Tilmeldt:28. dec 2010, 10:49

Re: Fjerne alle grønne pixels i et billede

Indlæg af ThomasI » 25. mar 2012, 20:00

Hej Ace! :)

Uden at have arbejdet med billed-behandling i php, så tror jeg umiddelbart at det er ret svært at fjerne den grønne farve fuldstændigt med php...

Jeg ved ikke hvordan det kan gøres bedre med php - og hvis det var mig ville jeg nok tage et kig på en billedbehandlingsprogram for at få det fjernet 100%...

Men der er sikkert en grund til at du bruger php til det, så kan være at f.eks photoshop ikke er en mulighed for dig...

ClubAce
Begynder
Indlæg:3
Tilmeldt:2. mar 2012, 00:29

Re: Fjerne alle grønne pixels i et billede

Indlæg af ClubAce » 25. mar 2012, 20:42

Ja Photoshop eller et andet billedbehandlingsprogram er desværre ikke en mulighed i det her tilfælde :)

Jeg har googlet rundt i flere timer nu, men synes ikke at jeg finde en måde at gøre flere forskellige farver i et billede gennemsigtig på samme tid.

Selvom det ikke bliver nemt, håber jeg at det er muligt at lave et array med en masse RGB-farvekoder (f.eks. forskellige nuancer af farven grøn) og derefter scanne alle billedets pixels. Med billedets farver kortlagt, forestiller jeg mig så, at man kan sammenligne dem med dem i RGB-arrayet og herudfra bestemme hvilke farver der skal gøres gennemsigtige i billedet.

I første omgang ville jeg faktisk være tilfreds med, hvis nogen bare kan vise mig hvordan, man gør mere end én farve gennemsigtig :)

Brugeravatar
ThomasI
Grundlægger
Grundlægger
Indlæg:1528
Tilmeldt:28. dec 2010, 10:49

Re: Fjerne alle grønne pixels i et billede

Indlæg af ThomasI » 25. mar 2012, 21:39

Hmm...ja et array vil måske virke...

Søgte også lige lidt efter en løsning, og fandt da også andre forums hvor der er blevet spurgt til det. Problemer er bare at der ingen svar er på de forum - kun spørgsmålet, så det hjælper ikke særlig meget...

Jeg kigger lidt videre og skal nok sige til hvis jeg finder noget... ;)

Besvar